从下面的神箭我们可以看出example https://godbolt.org/z/IXS6vv根据 clang 和 MSVC 的说法,这是格式不正确的,并查看了标准草案部分显式实例化部分[临时显式] http://eel.is/c++draft/temp.explicit我认为海湾合作委员会没有任何理由接受它。
我认为这篇文章“可能”的含义是:
template class Example<int>;
template class Example<float>;
template class Example<double>;
确实如此与 gcc/clang/MSVC 格式良好 https://godbolt.org/z/dOXtnt.
看起来 C++11 之前的语法是允许的,请参阅缺陷报告 1707:详细类型说明符中的模板没有嵌套名称说明符 http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1707 (强调我的):
10.1.7.3 [dcl.type.elab] 中的详细类型说明符语法
部分读到,
elaborated-type-specifier:
class-key nested-name-specifieropt templateopt simple-template-id
This 允许使用 template 关键字而无需
嵌套名称说明符,例如结构模板 S。这是
与 template 关键字的其他用法不一致。有可能
最好将生产一分为二并且只允许关键字
在嵌套名称说明符之后,
....
所以这更有意义有了这个评论 https://stackoverflow.com/questions/53030882/what-does-class-template-exampleint-statement-mean-with-c11#comment92966349_53032894 that -ansi
引起警告。
另一个回答者提交了两份错误报告 https://stackoverflow.com/a/53046830/1708801.
参考参数对显式实例化有很好的讨论 https://en.cppreference.com/w/cpp/language/class_template和这个问题显式实例化——何时使用? https://stackoverflow.com/q/2351148/1708801详细解释了为什么这很有用。
另请注意,我们可以看到这一点元帖子:链接已更改为 cppreference.com https://meta.stackexchange.com/q/194788/213111已知该网站包含不正确的信息,并且一般来说社区更喜欢参考参数 https://en.cppreference.com/w/作为可靠的 C++ 参考。