C ++ constexpr类型ID

时间:2015-02-13 06:16:38

标签: c++ templates c++11 constexpr typeid

我注意到typeid(T)调用提供了一种很好的constexpr兼容方法,可以在编译时检索给定类的唯一标识符。这非常有用,但我注意到type_info对象之间的关系运算符在编译时未启用。这是有道理的,因为实际ID可能在运行时有所不同。但是,我想在类型之间强加一个排序:

  1. 每个类型都有一些在编译时生成的唯一ID。 这些ID是什么,或者它们是如何在类之间进行排序的。
  2. 对于每对类型,可以关联地比较类型之间的ID,以确定哪种类型具有"较小的" ID。
  3. 如果ID的顺序在编辑之间发生变化,不会重要。
  4. 通过显式定义每种类型的ID,这在编译时非常可行。但是,我想知道是否有更合理的方法来生成每种类型的编译时,constexpr兼容的ID,允许进行关系操作。

    谢谢!

1 个答案:

答案 0 :(得分:2)

总结评论:

boost::fusion::set<>具有您需要的功能,其中元函数可以模拟标准库中的大多数算法,包括插入和删除。所有Fusion容器都是完全基于堆栈的,因为所有容器都是基于算法元函数的元组。

(Boost.Fusion概述here。)