1、如果获取指针或迭代器指向的类型
decltype(*std::declval<Pointer>())
decltype:c++11关键字,类型推导。详见:【C++】C++11新增关键字详解
std::declval将任何类型T转换为引用类型
2、lambad函数的参数声明不能使用auto
在C++11中,lambad函数的参数声明不能使用auto;否则报错;
error: 'auto' not allowed in lambda parameter
同时提示:只有在C++14及以上版本中才能使用
error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
注:在C++11中可以使用可以使用 decltype(*std::declval<Pointer>()) 代替