为什么在使用try_lock()时需要进行显式比较?

tem*_*boy 1 c++ mutex c++11

我正在阅读文档,std::mutex::try_lock它有这个例子:

#include <iostream>
#include <mutex>

int main()
{
    std::mutex test;
    if (test.try_lock() == true)
        std::cout << "lock acquired" << std::endl;
    else
        std::cout << "lock not acquired" << std::endl;
    test.unlock();  // now unlock the mutex
    test.lock();    // to lock it again
    if (test.try_lock())  // true can be left out
        std::cout << "lock acquired" << std::endl;
    else
        std::cout << "lock not acquired" << std::endl;
    test.lock(); // and now the finale (a block)
}
Run Code Online (Sandbox Code Playgroud)

在第二个if语句中,他说真的可以被排除在外.为什么这是第二个,而不是第一个.我检查过它说try_lock返回一个布尔值,那么它怎么能不是真或假,从而使== true检查变得多余?

Pet*_*ker 6

x == truex有类型的时候很傻bool.test.try_lock()返回bool,所以在这两种情况下都不需要测试.