断言内的Lambda

Inc*_*bus 3 c++ lambda assert

是否有可能在调用中使用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)