【发布时间】:2010-10-12 12:17:03
【问题描述】:
是否可以进行编译时Type -> Enum Series 映射?
举例说明:
比方说,我有一些Type 和一个枚举值:
typedef int Type;
enum Enumerated { Enum1, Enum2, Enum3, Enum4 };
现在我以某种方式声明以下内容:“让我们关联Enum1 和Enum4
类型为Type (还不知道如何实现)。
现在我希望能够检查以下内容(最好在编译时使用 mpl 来完成):
如果某些任意类型和枚举实际上是相互映射的:
template <typename ArbitraryType, Enumerated E>
struct check_at_compile_time {
// Somehow tricky evaluate this
static const bool value;
};
所以结果如下:
check_at_compile_time<Type, Enum1>::value evaluates to TRUE
check_at_compile_time<Type, Enum2>::value evaluates to FALSE
check_at_compile_time<Type, Enum4>::value evaluates to TRUE
check_at_compile_time<int, Enum3>::value evaluates to FALSE
如果有人知道实现这一点的好方法,请帮助我。也许使用boost::mpl 的东西,我不确定。
谢谢。
【问题讨论】:
标签: c++ templates types enums boost-mpl