C++ 是否/可以优化对函数参数的调用?

问题描述 投票:0回答:1

我们假设这个函数模板:

template <typename F>
void foo(F&& f) {
  f("foo");
}

void to_optimize() {
  foo([](std::string_view s) {
      std::cout << s << std::endl;
    });
}

在这种情况下,编译器是否或可以优化内联函数?也就是说,只需用

即可有效地替换它
void to_optimize() {
  std::cout << "foo" << std::endl;
}

c++ optimization compiler-optimization function-call inlining
1个回答
1
投票

C++ 标准允许任何没有明显效果的优化。如上所述,优化函数调用不会产生明显的效果。 C++ 程序无法确定此处是否发生了附加函数调用。

所以,是的,C++ 编译器可以优化函数调用。是否确实取决于编译器和编译器配置参数。

© www.soinside.com 2019 - 2024. All rights reserved.