Mat*_*ton 2 c++ c++11 visual-studio-2013
我正在试验并写下这个怪物:
class my_tuple : public std::tuple < std::vector<my_tuple> > {};
它似乎可以编译并实际工作.我发现它很狡猾,因为以下内容无法编译:
using my_other_tuple = std::tuple < std::vector<my_other_tuple> > ;
最终,我试图解决为什么my_tuple有效以及是否存在潜在的可怕后果.我正在努力学习元组是什么以及我能用/应该用它们做些什么.因此,如果有人愿意对此发表评论,请提供一些非常好的见解,我将不胜感激.
Windows 7和VS 2013.
class my_tuple : public std::tuple < std::vector<my_tuple> > {};
这是当前未定义的行为,因为它实例化了一个标准库容器,std::vector其类型my_tuple不完整,在关闭}其定义之前不会完成.但是,有一项建议允许实例化某些标准容器,包括std::vector不完整类型的容器.Boost.Containers也支持不完整的类型.
using my_other_tuple = std::tuple < std::vector<my_other_tuple> > ;
这是不正确的.[dcl.typedef]/p2,强调我的:
一个typedef的名称,也可以通过引入的别名声明.的 标识符下面的
using关键字成为typedef的名称和可选属性说明符-SEQ继标识符 appertains到的typedef名.它具有与typedef说明符引入的语义相同的语义.特别是,它没有定义新类型,它不应出现在type-id中.
| 归档时间: | 
 | 
| 查看次数: | 75 次 | 
| 最近记录: |