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");
到:
return test(5, 20, "bar") ? get_last_error() : err();
試試看! 'gcc -O2 -S'是你的朋友。 – zwol 2012-02-21 16:21:17
你在問現代編譯器是否能夠內聯..? – ildjarn 2012-02-21 16:23:40
是的。使用可變參數模板參數內聯一個函數。 – 2012-02-21 16:33:11