1 1 C++98 1 C++11 auto decltype 2 C++14 auto decltype 1 C++ C++ auto decltype C++14 decltype(auto) C++ auto decltype 1 C++ 1 2 1 C++ auto C++98 C++11 auto auto auto template<typename T> void f(ParamType param); f(expr); // call f with some expression f expr 2 1 T 1 ParamType 2 ParamType const template<typename T> void f(const T& param); // ParamType is const T& ParamType const T& int x = 0; f(x);