是否有可能在调用中使用lambda assert()
?
当我尝试以下...
assert([&]() -> bool{
sockaddr_storage addr; int addrlen = sizeof(addr);
return (getsockname(this->m_Socket, (sockaddr*)&addr, &addrlen) != 0) ? false : true;
});
Run Code Online (Sandbox Code Playgroud)
......我收到了错误
错误C2675:一元'!' :'`anonymous-namespace'::'没有定义此运算符或转换为预定义运算符可接受的类型
eq-*_*eq- 10
当然,但断言真的只需要一个布尔值; 不是lambda,所以你必须自己调用它(假设你的lambda是一个返回你想要断言的东西):
assert(([&]() -> bool{
sockaddr_storage addr; int addrlen = sizeof(addr);
return getsockname(this->m_Socket, (sockaddr*)&addr, &addrlen) == 0;
})());
Run Code Online (Sandbox Code Playgroud)