首页 > 试题广场 >

以下代码使用了std::invoke(C++17),哪个调用

[单选题]
以下代码使用了std::invoke(C++17),哪个调用会编译失败?
#include <functional>
struct Foo {
int x = 10;
int bar(int y) { return x + y; }
};
int main() {
Foo f;
auto a = std::invoke(&Foo::bar, f, 5);      // 行1
auto b = std::invoke(&Foo::x, f);            // 行2
auto c = std::invoke([](int n){ return n; }, 42); // 行3
// auto d = std::invoke(42);                  // 行4
}
  • 行1
  • 行2
  • 行3
  • 行4(如果取消注释)

这道题你会答吗?花几分钟告诉大家答案吧!