[meta.syn] (original) (raw)

The behavior of any function specified in namespace std​::​meta isimplementation-defined when a reflection of a construct not otherwise specified by this document is provided as an argument.

[Note 1:

Values of type std​::​meta​::​infocan represent implementation-specific constructs ([basic.fundamental]).

— _end note_]

[Note 2:

Many of the functions specified in namespace std​::​metahave semantics that can be affected by the completeness of class types represented by reflection values.

For such functions, for any reflection r such that dealias(r)represents a specialization of a templated class with a reachable definition, the specialization is implicitly instantiated ([temp.inst]).

[Example 1: template<class T> struct X { T mem;};static_assert(size_of(^^X<int>) == sizeof(int)); — _end example_]

— _end note_]