C++11 中可以使用 decltype 的形式声明函数的返回值类型 template<typename T> auto square(T x) -> decltype(T) { return x*x; }