摘要:
这段时间看C++标准库,看到有一个求公共类型的实用函数common_type<>;其实现是如下:template<typename T1,typename T2>
struct common_type<T1,T2>
{ typedef decltype(true?declval<T1>(),declval<T2>()) type;
}刚开始还觉得奇怪,条件永远为true,不就是直接计算T1吗,想当然的以为产生公共类型不就是T1的类型吗?后然通过一个实例上机实验才发现不是这么回事。于是找到关于条件运算符的说明;我们知道条件运算符?:是C 阅读全文
摘要:
C++11 提供了许多的类型特征和型别实用函数。1 declval01122 /// declval
01123 template<typename _Tp>
01124 struct __declval_protector
01125 {
01126 static const bool __stop = false;
01127 static typename add_rvalue_reference<_Tp>::type __delegate();
01128 };
01129 01130 template<typename _... 阅读全文