我有个问题:

我想显式实例化类似Datatype的类:

using Layout = some::namespaces::Meat_Layout<Some,Parameters>;
using Datatype = other::namespaces::Meta_Datatype<Layout>;

对于显式实例化,我需要使用详细的类型说明符。不允许使用typedef。因此我不能写:
template class Datatype;

但是我必须写:
template class some::namespaces::Meta_Datatype<other::namespaces::Meat_Layout<Some,Parameters>>;

如果那里还有任何typedef,我也必须替换它们,这可能会导致类似:
template class some::namespaces::Meta_Datatype<other::namespaces::Meta_Meat_Layout<Some,Meta_Parameters<int>,int,int>>;

如您所见,这变得非常快还不清楚。

有什么技巧可以避免所有typedef的解构?

最好在使用extern template时也可以使用该技巧。

最佳答案

您不必解构所有typedef。那些用作模板参数的参数可以保留不变:

using Layout = some::namespaces::Meat_Layout<Some,Parameters>;
using Datatype = other::namespaces::Meta_Datatype<Layout>;

template class other::namespaces::Meta_Datatype<Layout>;

关于c++ - 有一个技巧可以显式实例化深层模板类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58745481/

10-11 15:59