如何将属性添加到lambda函数?

Wal*_*ter 7 c++ lambda attributes noreturn

假设我有一个lambda

auto func = [](std::string msg) { throw std::runtime_error(msg); };
Run Code Online (Sandbox Code Playgroud)

(诚​​然,这个例子没什么意义,但那不是重点).如果这不是lambda,而是普通函数,我会用noreturn属性声明它

[[noreturn]] void func(std::string msg) { throw std::runtime_error(msg); }
Run Code Online (Sandbox Code Playgroud)

这也可以用于lambda吗?(我用clang 3.5尝试了几种变体,但没有任何成功.)


编辑使用Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn),我试过了

auto func = [](std::string msg) -> [[noreturn]] void { throw std::runtime_error(msg); };
Run Code Online (Sandbox Code Playgroud)

要么

auto func = [](std::string msg) [[noreturn]] { throw std::runtime_error(msg); };
Run Code Online (Sandbox Code Playgroud)

但两人都被拒绝了.这是clang 3.5的不完整/错误吗?

R S*_*ahu 0

以下内容在 g++ 4.9.3 中有效:

void foo()
{
  auto func = [] (std::string msg) [[noreturn]] { throw std::runtime_error(msg); };
}
Run Code Online (Sandbox Code Playgroud)

也可在http://ideone.com/49Ietf上使用。