标题可能太模糊了,我会解释我的意思。
我正在开发一个帮助库来处理TLV编码的值。在库中,每个值都以正确的本机类型包含标记ID,标记类型代码和标记值。这样的标记值容器由在标签id和相关类型特征(其声明标记值的属性)上参数化的模板类实现。现在我希望能够确保一个标签ID仅与一个特征相关联,这样我就无法创建具有相同标签ID但具有不同数据类型的TLV值。所以这是一种标记词汇表,只在编译时检查过。
template<uint_t TagId, typename Trait>
struct TagBinder
{
enum { my_id = TagId };
// stuff skipped
};
我想确保TagBinder<100, IntTrait>
和TagBinder<100, BoolTrait>
无法一起编译。我想知道这是否可行。也许我可以使用提升MPL的东西吗?我试图避免的一件事是宏。此外,不幸的是,C ++ 11是不可能的。
提前谢谢!
答案 0 :(得分:0)
所以我不得不承认我的问题没有答案。似乎没有办法在纯c ++中实现我想要的东西。