boost::shared_ptr
非常に頻繁に呼び出される可能性があり、単純にポインターを返すため、演算子は の良い候補ではありません->
かinlined
?
T * operator-> () const // never throws
{
BOOST_ASSERT(px != 0);
return px;
}
inline
とにかく、優れたコンパイラは自動的にこれを行いますか?
これで睡眠を失う必要がありますか?:-)
boost::shared_ptr
非常に頻繁に呼び出される可能性があり、単純にポインターを返すため、演算子は の良い候補ではありません->
かinlined
?
T * operator-> () const // never throws
{
BOOST_ASSERT(px != 0);
return px;
}
inline
とにかく、優れたコンパイラは自動的にこれを行いますか?
これで睡眠を失う必要がありますか?:-)
Functions defined (i.e. with a body) inside a class are implicitly candidates for inlining. There is no need to use the inline
keyword in these cases, and it is unusual to do so.
Would a good compiler automatically inline this anyway?
Quite probably, yes, it would.
Should I lose any sleep over this?
Better not. If you want to be super-sure (or you are super-curious), check the assembly that's going out from your compiler.
shared_ptr
はクラステンプレートであるため、そのメンバ関数は実際には関数テンプレートであることに注意してください。
これらはexport
ed ではないため、宣言するだけでなく 、ストレージ指定子で定義された関数のように、それらが使用されるすべての翻訳単位で定義する必要があります。inline
ある意味ではtemplate
も意味しinline
ます。