Modern C++学习: auto和模板类型推导的规则
auto类型和typename的推导规则
规则1
: auto 和 typename 只会匹配类型规则2
: auto 和 typename 指针是类型, 而不是属性
说明:
测试代码说明:
- 使用boost的type_index.hpp提供的类型查看方式
- 使用宏函数简化代码
- auto类型默认使用了
宏函数tp(变量名)
打印, 为了方便阅读,没有显示出来 - // 注释无特殊说明, 默认为打印出来的类型名(打印方式参考如下)
#include <boost/type_index.hpp>
using boost::typeindex::type_id_with_cvr; // 使用boost的类型查看
#define tp(a) cout << type_id_with_cvr<decltype(a)>().pretty_name() << endl
// 该方法会返还一个对完整名称的字符串
// 测试typename 的推导结果
template <typename T>
void ptype(T a)
{
tp(a)<