同一类模板参数的不同顺序是否会生成不同的类

Does a different order of the same class template arguments generate a different class?

本文关键字:顺序 是否 一类 参数      更新时间:2023-10-16

我有一个类模板,它通过将属性作为参数分配给模板来生成唯一的类。 即:

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> 的实例化都是相同的。