现代的C++编译器(包括gcc)会优化以下(类似宏的)代码吗?
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();发布于 2012-02-22 00:43:40
您所描述的内容被称为“完美转发”(如果您想深入了解它,这是google的术语),多亏了r-value引用,C++11才能支持它。所以答案是肯定的,它会得到充分的优化。
https://stackoverflow.com/questions/9380941
复制相似问题