我对类 Traits 的理解是,它是一个类,它封装了模板类和模板函数所必需的一组类型和函数,以操作它们被实例化的类型的对象。
在下面的示例中,为什么我们不能使用 'gquiz::container_type' 声明,否则我们如何知道 gquiz 的特征:
int main()
{
queue <int> gquiz;
const queue <int>::container_type dq;
//why not gquiz::container_type ?????
cout << typeid(dq).name() << endl;
gquiz.push(10);
gquiz.push(queue <int>::value_type(20));
gquiz.push(30);
}
您可以使用
decltype(gquiz)::container_type
事实上,x::y
必须等同于decltype(x)::y
whenx
不是一种类型似乎更简单,我也(我敢打赌其他人)也考虑过这一点。但是它不在标准中,原因是......因为它不在标准中,所以不起作用。
并非 C++ 中的每一个决定都有逻辑依据,可能这个特定的决定有一个逻辑原因,但我想不出来。
可能只是没有理由。
随着 C++ 发生。很多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句