在源文件中专门针对类模板的显式

时间:2019-03-07 07:24:39

标签: c++ templates template-specialization template-instantiation

我有一个带有一些模板别名的类模板。由于我仅在模板上使用一组封闭的类型,因此我想专门化并显式实例化它们。我目前有这个:

// Header
template <typename T>
struct Literal {
    Literal(std::string_view);
};

using StringLiteral = Literal<std::string>;

// Source:
StringLiteral::Literal(std::string_view){/*...*/}

我假设我需要extern template StringLiteral之类的东西,但这似乎可行。我可以在完全不同于专业化的TU中使用StringLiteral

我的问题是,这合法吗?如果是这样,为什么不需要显式实例化?由于我们没有构造函数的定义,因此无法在另一个TU中隐式实例化模板。

另外,使用模板别名专门化对我来说似乎很奇怪,对吗?

0 个答案:

没有答案