我最近一直关注type_traits
&我们想知道为什么它们被实现为class templates
而将它们实现为functions
可能更明显&有一个更简单的语法。
我想说的是这种语法: -
int x = 5;
std::cout << is_same<int>(x);
更具说服力&amp;比实际更清洁,即: -
int x = 5;
std::cout << is_same <int, decltype(x)>::value;
这只是好奇心的一个例子。我只想了解标准化委员会的理念,而不是class
方法而不是function
方法。
答案 0 :(得分:8)
X::value
布尔常量和X::type
类型别名,可用于标记调度。 constexpr
函数不可用时。即使在constexpr函数中,也不能将值作为参数传递,因为它可能会阻止编译时评估。