On 31 May 2013 15:15, Ed Smith-Rowland wrote: > Greetings, > > This patch implements N3642 - User-defined literals for > std::chrono::duration and std::basic_string > and N3660 - User-defined literals for std::complex.
Great, thanks! > User-defined literals were separated into two papers because of some > controversy about noexcept for complex literals. > If desired, I could split the patch into two bits for the two proposals. > OTOH, I'm pretty sure complex literals will make it in. I'm not so sure, and if they do they might use "if" as the suffix rather than "i_f", so please split this patch so the non-complex parts can go in. I don't think you need to touch config/abi/pre/gnu.ver, al lthe new functions are inline and not exported from the library, so you don't need to version symbols that aren't in the library (in fact, you *can't* version symbols that aren't in the library!) It looks like the changes to existing headers could be simplified by not closing and reopening the namespace, i.e. instead of: namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION [...] _GLIBCXX_END_NAMESPACE_VERSION } // namespace +#if __cplusplus > 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +inline namespace literals { +inline namespace string_literals { [...] Just put the new stuff inside the already open namespace, i.e. namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION [...] +#if __cplusplus > 201103L + +inline namespace literals { +inline namespace string_literals { [...] +} } +#endif + _GLIBCXX_END_NAMESPACE_VERSION } // namespace