Home > Software engineering >  Why is std::mutex a standard-layout class?
Why is std::mutex a standard-layout class?

Time:11-04

[thread.mutex.class]/3 :

The class mutex meets all of the mutex requirements ([thread.mutex.requirements]). It is a standard-layout class ([class.prop]).

What is the reason for this requirement?

CodePudding user response:

Interoperability with the associated C interface. From N2320 (Multi-threading Library for Standard C ):

The C level interface has been removed from this proposal with the following rationale:

  • As long as we specify that the key types in this proposal are standard-layout types (which we have done), WG14 is still free to standardize a C interface which interoperates with this C interface.
  • WG14 is in a better position to solve the cancellation interoperability problem than WG21 is. [...]
  • WG14 asked WG21 to take the lead on this issue. We feel we can best take lead by specifying only a C interface which has the minimum hooks in it to support a future C interoperating interface (i.e. types are standard-layout types). We feel we should stop short of actually specifying that C interface in the C standard. WG14 can do a better job with the C interface and a future C standard can then import it by reference.
  • Related