C :标签/特征模板:确保标签仅绑定一次
C++: tag/trait template: ensure tag is bound only once
标题可能太模糊了,我将解释我的意思。
我正在开发一个用于使用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>
不会一起编译。我想知道这是否有可能。Boost MPL中是否可以使用某些东西?我要避免的一件事是宏。另外,不幸的是,C 11是不可能的。
预先感谢您!
,所以我必须承认我的问题没有答案。似乎没有办法实现我想要的纯C 。
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 高级选择排序 - 在一次迭代中搜索两个元素
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- 什么是仅调用一次并调用参数的控制台应用
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 为什么我的信号处理程序只执行一次?
- 如何使用C++一次读取整个二进制文件
- 花括号使循环运行一次?
- 从子菜单返回后,正确的输入至少进入验证循环一次
- C :标签/特征模板:确保标签仅绑定一次