参考cppreference's section on function templates:
显式实例化函数模板或成员函数 类模板不能使用内联或constexpr
这些主题inline
和constexpr
似乎是分开且无关的。为什么存在这种限制?
答案 0 :(得分:2)
因为它们用于相反的目的。
显式实例化的重点是,在 source 文件中,为项目所需的模板提供定义,这样您就不必在{{3}中完全定义模板}}
inline
的要点是允许标题中的函数定义 - 以便跨多个翻译单元的多个函数定义可以合并为一个。
constexpr
函数必须具有可见的定义,以便编译器能够在编译时实际调用它们。没有链接时间constexpr
。
显式实例化inline
或constexpr
函数没有意义 - 这些函数模板必须已经在头文件中定义,因此可以按需隐式实例化。