https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124447

--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> ---
[support.c.headers.other]

"It is unspecified whether these names are first declared or defined within
namespace scope (6.4.6) of the namespace std and are then injected into the
global namespace scope by explicit using-declarations (9.10)"

So the contents of <cstdint> are expected to be defined in terms of
using-declarations, it's just unspecified whether it's done as:

using int64_t = long;
namespace std { using ::int64_t; }

or:

namespace std { using int64_t = long; }
using std::int64_t;

Whichever form is used, either ^^::int64_t or ^^std::int64_t will be
ill-formed.

We could change how we declare typedefs, but it won't help for functions added
to namespace std via using-declarations.

Basically, reflecting things from the standard library is not a good idea.

Reply via email to