我想阻止人们在不处理返回值的情况下调用lambda.
Clang 4.0拒绝我尝试过的所有内容,使用-std = c ++ 1z进行编译:
auto x = [&] [[nodiscard]] () { return 1; };
// error: nodiscard attribute cannot be applied to types
Run Code Online (Sandbox Code Playgroud)
auto x = [[nodiscard]] [&]() { return 1; };
// error: expected variable name or 'this' in lambda capture listRun Code Online (Sandbox Code Playgroud)
auto x [[nodiscard]] = [&]() { return 1; };
// warning: nodiscard attribute only applies to functions, methods, enums, and classesRun Code Online (Sandbox Code Playgroud)
[[nodiscard]] auto x = [&]() { return 1; };
// warning: nodiscard attribute …Run Code Online (Sandbox Code Playgroud)