#include struct A { double x; }; A* a = new A{0}; decltype(a->x) y= a->x; template auto add(T t, U u) -> decltype(t+u){ return t+u; } int main(){ y = 2.0; std::cout << "y= " << y << ", x=" << a->x << std::endl; auto f = [] (int a, int b) -> int {return a*b;}; decltype(f) g = f; std::cout << "f(3,5)=" << f(3,5) << ", add: " << add(3,5) << std::endl; }