template<classT, classU> auto add(T t, U u) -> decltype(t + u) //C++11 不加 -> decltype(t + u)会编译失败 C++14 auto才支持函数推导 { return t + u; } // 返回类型是 operator+(T, U) 的类型
inttest(int a, int b) { return a * b; }
intmain() { auto a = 1 + 2; auto b = add(2, 2); auto c = add(2, 2.3); auto d = {1.0, 2.0}; auto &e = a; //e为a的 引用 auto f = &e; //f为指向e 也就是a的 指针 auto g = "111", h = "222"; auto i = &f;//i是指向f的指针
auto (*p)(int, int) -> int; //声明p为一个 int (int, int)的函数 p = test; //auto (*q)(int, int) -> auto = p;//声明 q 为指向【返回 T 的函数】的指针 其中 T 从 p 的类型推导 C++14 可用 //cout<<"q = "<<q(6, 6)<<endl; cout<<"p = "<<p(3, 3)<<endl; //9