我有一个类模板,它通过将属性指定为模板的参数来生成唯一的类。 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;
编译器通常是否有适当的东西来防止这样的重复,或者我是否必须以强制编译器使两个对象共享代码的方式进行编程?
答案 0 :(得分:3)
这不是重复,所以编译器不能有任何防止它的东西。如果两个或多个类型名称相同,则仅重复。对于任意A和B,template class<A,B>
和template class<B,A>
的实例化都是相同的,没有什么可说的。