随着GCC 4.8.0的发布,我们有一个支持自动返回types演绎的编译器,它是C ++ 14的一部分。 用-std=c++1y ,我可以这样做: auto foo() { //deduced to be int return 5; } 我的问题是:我应该什么时候使用这个function? 什么时候有必要,什么时候使代码更清洁? 情况1 我能想到的第一种情况是尽可能的。 每一个可以这样写的函数应该是。 这个问题是,它可能并不总是使代码更具可读性。 情景2 下一个场景是避免更复杂的返回types。 作为一个非常简单的例子: template<typename T, typename U> auto add(T t, U u) { //almost deduced as decltype(t + u): decltype(auto) would return t + u; } 我不相信这将是一个真正的问题,虽然我认为在某些情况下显式依赖于参数的返回types可能会更清晰。 情景3 接下来,为了防止冗余: auto foo() { std::vector<std::map<std::pair<int, […]