同一类模板参数的不同顺序是否会生成不同的类
Does a different order of the same class template arguments generate a different class?
我有一个类模板,它通过将属性作为参数分配给模板来生成唯一的类。 即:
template <size_t arg> property;
template <typename... properties> class object;
object<property<value> > obj;
我想避免的是编译器根据不同的属性排列生成多余的代码,例如:
object<property<value1>, property<value2> > obj;
与以下对象共享相同的函数表:
object<property<value2>, property<value1> > obj;
编译器通常是否具有防止此类重复的功能,或者我是否必须以强制编译器使两个对象共享代码的方式进行编程?
它不是重复的,所以编译器不能有任何措施来防止它。仅当两个或多个类型名称相同时,它才是重复的。没有什么可说的,对于任何任意 A 和 B,template class<A,B>
和 template class<B,A>
的实例化都是相同的。
相关文章:
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 是否有任何内置函数可以检查给定的两个数字在给定整数数组中的顺序是否相同?
- 构造函数中初始化列表的计算顺序是否固定?
- C++中的类私有成员的内存顺序是否得到保证?
- 修改顺序是否有助于发生在关系之前
- 初始化变量列表中的赋值顺序是否未定义
- 与总顺序相比,部分顺序是否足以构建堆
- c++:多态性+多重继承顺序.继承顺序是否重要
- 执行pclint时,include文件的顺序是否重要
- 同一类模板参数的不同顺序是否会生成不同的类
- 更改专用化"template<...>"行中模板参数的顺序是否会导致定义重复或歧义?
- 定义向量元素的破坏顺序是否合理
- 在排序时更改排序顺序是否是未定义的行为
- 类中方法声明的顺序是否对编译器很重要
- 构造函数初始化列表中使用的变量的顺序是否重要
- 导入.so时,导入语句的顺序是否重要
- 多个va_end调用的顺序是否重要
- std::set迭代顺序是否始终根据C++规范升序
- 在给定的翻译单元中,文件级静态变量的顺序是否始终相同
- 通过std::map的迭代顺序是否已知(并由标准保证)