C++ 为什么函数模板的显式实例化不能使用inline或constexpr
指: 函数模板或成员函数的显式实例化 类模板的类型不能使用内联或constexprC++ 为什么函数模板的显式实例化不能使用inline或constexpr,c++,templates,inline,constexpr,explicit-instantiation,C++,Templates,Inline,Constexpr,Explicit Instantiation,指: 函数模板或成员函数的显式实例化 类模板的类型不能使用内联或constexpr 这些主题,inline和constexpr,似乎是独立的、不相关的。为什么会存在这种限制?因为它们的作用相反 显式实例化的要点是,在源文件中,为项目所需的模板提供定义,这样就不必在源文件中完全定义模板 inline的要点是允许在一个标题中定义函数,以便跨多个翻译单元的函数的多个定义可以折叠为一个 constexpr函数必须具有可见的定义,编译器才能在编译时实际调用它们。没有链接时间constexpr 显式实例化i
这些主题,
inline
和constexpr
,似乎是独立的、不相关的。为什么会存在这种限制?因为它们的作用相反
显式实例化的要点是,在源文件中,为项目所需的模板提供定义,这样就不必在源文件中完全定义模板
inline
的要点是允许在一个标题中定义函数,以便跨多个翻译单元的函数的多个定义可以折叠为一个
constexpr
函数必须具有可见的定义,编译器才能在编译时实际调用它们。没有链接时间constexpr
显式实例化
inline
或constexpr
函数没有意义-这些函数模板必须已经在头文件中定义,因此可以按需隐式实例化 因为inline
和constexpr
都会导致函数没有实际实例?这当然与整个“显式实例化”部分背道而驰。