This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++14 status.
Section: 21.3.6 [meta.unary.prop.query] Status: C++14 Submitter: Stephan T. Lavavej Opened: 2013-09-21 Last modified: 2017-07-05
View all issues with C++14 status.
The sibling sections 21.3.5 [meta.unary], 21.3.7 [meta.rel], and 21.3.8 [meta.trans] respectively specify UnaryTypeTraits, BinaryTypeTraits, and TransformationTraits, as stated by each /2 paragraph. However, 21.3.6 [meta.unary.prop.query] is underspecified. alignment_of, rank, and extent are said to produce "Values", but the type of that Value is not specified, and the struct templates are not required to derive from integral_constant. Such derivation is more than stylistic — it allows the structs to be passed to functions taking integral_constant.alignment_of returns alignof(T) which is size_t (126.96.36.199 [expr.alignof]/2). extent returns an array bound, which is clearly size_t. rank returns "the number of dimensions" of an array, so any type could be chosen, with size_t being a reasonable choice. (Another choice would be unsigned int, to match extent's template parameter I.)
[Issaquah 2014-02-11: Move to Immediate]
This wording is relative to N3691.
Following 21.3.6 [meta.unary.prop.query]/1 add a new paragraph as indicated: