Source: https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf