cppreference表示std::thread::id只有 1 个构造函数。 libstdc++包含以下附加公共构造函数:
explicit id(native_handle_type __id) : _M_thread(__id) { }
Run Code Online (Sandbox Code Playgroud)
'cppreference' 是否已过时,或者此构造函数不是标准的一部分?如果它不是标准的一部分,那么为什么它会被公开,因为它std::thread是 的朋友std::thread::id?
标准库实现可以向任何类添加任何公共函数或其他函数,只要它们不干扰标准定义的接口即可。具体来说,如果某个表达式通过重载决策调用标准库中定义的特定函数,那么它实际上必须调用导致该行为的函数。 std::thread::id(some_native_handle)不会调用标准定义的id构造函数。因此,库实现允许它调用其他东西。
也就是说,应该按照标准以某种方式工作的代码也会以这种方式工作。无法工作的代码可能会被允许执行某些操作,但这最终是未指定的,并且不能跨实现依赖。