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

时间:2013-11-07 04:32:37

标签: c++ templates

我有一个类模板,它通过将属性指定为模板的参数来生成唯一的类。 IE:

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;

编译器通常是否有适当的东西来防止这样的重复,或者我是否必须以强制编译器使两个对象共享代码的方式进行编程?

1 个答案:

答案 0 :(得分:3)

这不是重复,所以编译器不能有任何防止它的东西。如果两个或多个类型名称相同,则仅重复。对于任意A和B,template class<A,B>template class<B,A>的实例化都是相同的,没有什么可说的。