由于模板是在头文件中定义的,编译器能够确定内联函数是否有利,它有什么意义吗?我听说现代编译器知道何时内联函数并忽略inline
提示。在模板中使用内联关键字有意义吗?
编辑:我想接受这两个答案,但这是不可能的。要关闭我接受phresnel这个问题的答案,因为它获得多数选票,他是正式的权利,但正如我在评论中提到,我认为小狗的和组件10的答案是正确之辈,从不同的角度来看。
问题出在C++语义上,在inline
关键字和内联的情况下不严格。 phresnel表示“如果你的意思是内联写入”,但inline
的实际含义并不清楚,因为它从原来的含义演变为“阻止编译器对ODR违规行为嗤之以鼻”的指令为Puppy说。
明确的专业化是真的 - 它们就像普通的功能一样。但是在这里 - >'template inline T g(T){}'不需要内联,你可以写'template T g(T){}' –
doc
可以写成true。但是这并不意味着内联,即使它看起来像这样。 Vandevoorde和Josuttis在_C++模板中也完全说明了这一点:完整的Guide_ –
模板可以有多个定义(3.2/5) - > http://stackoverflow.com/a/10211420/205955我声明这并不意味着它们是正式内联的。但是,这一切都归结于实践。所以,从不同的角度来看,这两个答案都是正确的。 – doc