1

参考cppreference 关于函数模板的部分

函数模板或类模板的成员函数的显式实例化不能使用 inline 或 constexpr

这些主题inlineconstexpr似乎是独立且不相关的。为什么会有这个限制?

4

1 回答 1

2

因为它们服务于相反的目的。

显式实例化的目的是在文件中为您的项目需要的模板提供定义,这样您就不必在头文件中完全定义模板。

的重点inline是允许在标题中定义函数 - 以便跨多个翻译单元的函数的多个定义可以折叠成一个。

constexpr函数必须具有对编译器可见的定义,才能在编译时实际调用它们。没有链接时间constexpr

inline显式实例化一个or函数是没有意义的constexpr——这些函数模板必须已经在头文件中定义,因此能够按需隐式实例化。

于 2017-02-02T15:25:10.790 回答