C++中的元编程常用工具
std::forward : 通常是用于完美转发的,它会将输入的参数原封不动地传递到下一个函数中,这个“原封不动”指的是,如果输入的参数是左值,那么传递给下一个函数的参数的也是左值;如果输入的参数是右值,那么传递给下一个函数的参数的也是右值。
std::remove_reference_t : 是一个模板类的类型别名,用于去掉T的引用属性
std::remove_const_t : 是一个模板类的类型别名,用于去掉T的const属性
std::decay : 为我们移除类型中的一些特性,比如引用、常量、volatile,但是不包括指针特性
std::conditional<bool B, class T, class F> : 提供成员 typedef type,若B在编译时为true则定义为T ,或若B为false则定义为F
std::is_same<class A, class B> : 模板用于检查类型A是否与类型B相同。如果两者相同,则返回布尔值true,否则返回false