Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么函数模板的显式实例化不能使用inline或constexpr_C++_Templates_Inline_Constexpr_Explicit Instantiation - Fatal编程技术网

C++ 为什么函数模板的显式实例化不能使用inline或constexpr

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

指:

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


这些主题,
inline
constexpr
,似乎是独立的、不相关的。为什么会存在这种限制?

因为它们的作用相反

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

inline
的要点是允许在一个标题中定义函数,以便跨多个翻译单元的函数的多个定义可以折叠为一个

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


显式实例化
inline
constexpr
函数没有意义-这些函数模板必须已经在头文件中定义,因此可以按需隐式实例化

因为
inline
constexpr
都会导致函数没有实际实例?这当然与整个“显式实例化”部分背道而驰。