C++ C++;constexpr类型ID
我注意到,C++ C++;constexpr类型ID,c++,templates,c++11,constexpr,typeid,C++,Templates,C++11,Constexpr,Typeid,我注意到,typeid(T)调用提供了一种很好的与constexpr兼容的方法,可以在编译时检索给定类的唯一标识符。这是非常有用的,但我注意到,在编译时不会启用由此产生的type\u info对象之间的关系运算符。这是有意义的,因为实际ID在运行时可能会有所不同。但是,我希望在类型之间进行排序,以便: 每个类型都有一些在编译时生成的唯一ID。不管这些ID是什么,也不管它们在类之间的顺序如何 对于每一对类型,可以对类型之间的ID进行关联性比较,以确定哪个类型具有“较小”的ID 如果ID的顺序在编译
typeid(T)
调用提供了一种很好的与constexpr兼容的方法,可以在编译时检索给定类的唯一标识符。这是非常有用的,但我注意到,在编译时不会启用由此产生的type\u info
对象之间的关系运算符。这是有意义的,因为实际ID在运行时可能会有所不同。但是,我希望在类型之间进行排序,以便:
(Boost.Fusion概述。)我很好奇为什么需要编译时比较…本质上是无序元组的实现。例如,无序_元组应该有一个与无序_元组兼容的底层表示?(Boost.Fusion概述)如果是这样,这是一个相当复杂的问题所需的用法似乎非常类似于
fusion::set
!然而,根据我对集合的经验,它们传统上是间接的堆内存,而元组则完全包含在堆栈中(但我承认我对Boost实现知之甚少,所以如果我错了,请纠正我!)本质上,这个XY问题中的“Y”是我想要一个可以接受对象的统一函数,
向其添加
,并将其添加到对象的向量中。类似地,我想获取一个对象
,添加一个
,然后仍然映射到对象
向量。在任何情况下,感谢a ton:]Boost.Fusion没有使用堆,它的集合(与所有容器一样)只是一个美化的元组/*我想要一个统一的函数,它可以接受一个对象
,向它添加一个
,然后将它添加到对象的向量
*/Fusion就是这样做的。请参阅有关变异函数/元函数的部分。