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++ C++;用静态内联声明模板函数有意义吗?_C++_Templates_Inline_Standards - Fatal编程技术网

C++ C++;用静态内联声明模板函数有意义吗?

C++ C++;用静态内联声明模板函数有意义吗?,c++,templates,inline,standards,C++,Templates,Inline,Standards,我们没有“外部模板”,而“模板”函数总是“隐式内联”。这有意义吗?这对我来说没有意义。函数模板不是“隐式内联”。您必须显式地将其声明为“inline”,以使其成为inline 这并不意味着对它的调用是或不是内联的。这完全是编译器的决定。由于模板可以在多个翻译单元中定义(前提是每个定义都赋予模板相同的行为),因此将inline放在这样一个模板上并没有多大影响,从我所看到的。唯一的效果是告诉优化器,您希望函数模板的调用应该是内联的,正如我所看到的 制作函数模板静态是完全明智的。这使得您可以在多个翻译

我们没有“外部模板”,而“模板”函数总是“隐式内联”。这有意义吗?

这对我来说没有意义。函数模板不是“隐式内联”。您必须显式地将其声明为“inline”,以使其成为inline

这并不意味着对它的调用是或不是内联的。这完全是编译器的决定。由于模板可以在多个翻译单元中定义(前提是每个定义都赋予模板相同的行为),因此将
inline
放在这样一个模板上并没有多大影响,从我所看到的。唯一的效果是告诉优化器,您希望函数模板的调用应该是内联的,正如我所看到的

制作函数模板
静态
是完全明智的。这使得您可以在多个翻译单元中定义模板,每个定义具有不同的行为。由于
静态
模板将具有内部链接,这意味着它们是其翻译单元的本地模板,不会发生冲突


不过,在函数和函数模板上放置
static
与在它们上放置
inline
是完全独立的<代码>静态<代码> >代码>内联< /COD>不依赖于C++。

我不明白你的意思。你必须定义一个模板函数“隐式内联”,因为C++中没有外部模板函数。@ Fielt,这不是C++的“内联”。你的意思是“没有单独的汇编”。你的意思是没有导出模板。一些前端和编译器已经实现了“外部模板”C++0x特性。