我存储的配置作为类型:什么时候是一个类型相等(模板专业化)?
using CONFIG1 = Config<x, y, z>;
using CONFIG2 = Config<a, b, c>;
using CONFIG3 = Config<x, y, z>;
对于每个配置,有一类模板专业化,做一些更多的配置工作:
template <class CONFIG>
MyClass;
template <>
MyClass<CONFIG1>{...}
template <>
MyClass<CONFIG2>{...}
template <>
MyClass<CONFIG3>{...}
现在,如你所见,CONFIG1
恰巧具有与CONFIG3
相同的定义。
的问题是:
哪个专业化将采取
CONFIG1
和CONFIG3
,或:当是一种平等的吗?是它的名字还是它的实际内容?如果是实际内容,我如何才能实现
CONFIG1
和CONFIG3
实际调用不同的专业化?
我期望这段代码不能编译,正是因为'CONFIG1'与'CONFIG3'相同。编译器可能会抱怨你不能为同一类型专门化两次。您不应该能够首先定义两个不同的专业化,更不用说调用它们了。 –
我也期待这种行为,但它不回答这个问题。 – Michael
它真的不能回答你的问题,还是只是不告诉你你想听到什么? 'CONFIG1'和'CONFIG3'是同一类型的两个名称 - 是不是你要求的?如果你想要不同的专业化,你将不得不使他们不同的类型,而不是相同类型的typedef。例如。你可以让他们从'Config'派生类。 –