auto + decltype
用于标注函数返回值
令人意外的是:C++14 加入的返回值推导是一种特殊的类型,和前向声明并不兼容。
int known();
auto known() { return 42; } // 错误:类型不兼容
// int known() { return 42; } // ok
// auto known() -> int { return 42; } // ok
同样:
auto known();
int known() { return 42; } // 错误:类型不兼容
// auto known() { return 42; } // ok
C++ 14 还加入了 decltype(auto)
,这个组合不像单独的 auto
,不能被 const
等继续修饰。