2012-02-21 22 views
1

最新のC++コンパイラ(gccを含む)は、次の(マクロのような)コードを最適化しますか?例えばC++コンパイラの最適化

template<typename F, typename ...A> 
    err foo(F fn, A&&... args) 
    { 
     return fn(std::forward<A>(args)...) ? get_last_error() : err(); 
    } 

、それは次のコード

return foo(test, 5, 20, "bar"); 

を最適化することができます。それがあればGoogleに用語だ(「完璧なフォワーディング」と呼ばれているあなたが記述している

return test(5, 20, "bar") ? get_last_error() : err(); 
+3

試してみてください! 'gcc -O2 -S'はあなたの友人です。 – zwol

+5

最新のコンパイラがインライン展開できるかどうか尋ねています。 – ildjarn

+0

はい。可変的なテンプレートパラメータで関数をインライン展開する。 –

答えて

2

それについてもっと深く学びたい)、そしてC++ 11はr値参照のおかげでそれをサポートします。答えははいです。完全に最適化されます。

関連する問題