Будут ли современные компиляторы 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();