Created on 2015-12-10.00:00:00 last changed 100 months ago
Proposed resolution:
This wording is relative to N4600.
In [meta.logical] p3, edit as follows:
template<class... B> struct conjunction : see below { };-2- The class template
-3- Theconjunctionforms the logical conjunction of its template type arguments. Every template type argument shall be usable as a base class and shall have a static data membervaluewhich is convertible tobool, is not hidden, and is unambiguously available in the type.BaseCharacteristic of aspecialization conjunction<B1, …, BN> has a public and unambiguous base that is either
- — the first type Bi in the list true_type, B1, ..., BN for which bool(Bi::value) is false, or
- — if there is no such Bi, the last type in the list.
-?- The member names of the base class, other than conjunction and operator=, shall not be hidden and shall be unambiguously available in conjunction.
is the first type[Note: This means a specialization of conjunction does not necessarilyBin the listtrue_type, B1, …, BNfor whichB::value == false, or ifevery B::value != falsethe BaseCharacteristic is the last type in the list.have a BaseCharacteristic ofinherit from eithertrue_typeorfalse_type. — end note]
In [meta.logical] p6, edit as follows:
template<class... B> struct disjunction : see below { };-5- The class template
-6- Thedisjunctionforms the logical disjunction of its template type arguments. Every template type argument shall be usable as a base class and shall have a static data membervaluewhich is convertible tobool, is not hidden, and is unambiguously available in the type.BaseCharacteristic of aspecialization disjunction<B1, …, BN> has a public and unambiguous base that is either
- — the first type Bi in the list false_type, B1, ..., BN for which bool(Bi::value) is true, or,
- — if there is no such Bi, the last type in the list.
-?- The member names of the base class, other than disjunction and operator=, shall not be hidden and shall be unambiguously available in disjunction.
is the first type[Note: This means a specialization of disjunction does not necessarilyBin the listfalse_type, B1, …, BNfor whichB::value != false, or ifevery B::value == falsethe BaseCharacteristic is the last type in the list.have a BaseCharacteristic ofinherit from eithertrue_typeorfalse_type. — end note]
In [meta.logical] p8, edit as follows:
template<class B> struct negation :integral_constant<bool, !B::value>see below { };-8- The class template
negationforms the logical negation of its template type argument. The typenegation<B>is a UnaryTypeTrait with a BaseCharacteristic ofintegral_constant<bool, !bool(B::value)>.
[ 2016-11-08, Issaquah ]
Adopted during NB comment resolution
[ 2016-08-07 Daniel provides wording borrowed from 2567 ]
Addresses: fund.ts.v2
The specification of conjunction and disjunction uses the term BaseCharacteristic, which is problematic in several ways:
That term is defined in [meta.rqmts], but only for UnaryTypeTraits and BinaryTypeTraits. conjunction and disjunction seem to be neither.
[meta.rqmts] also requires the BaseCharacteristic for both UnaryTypeTraits and BinaryTypeTraits to be a specialization of integral_constant, which is inconsistent with the current design of conjunction and disjunction.
The requirement in [meta.rqmts] that "member names of the BaseCharacteristic shall not be hidden and shall be unambiguously available" seems impossible to meet in every case, since the arbitrary base class from which a specialization of conjunction or disjunction derives may contain members called conjunction or disjunction that will necessarily be hidden.
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2017-07-30 20:10:41 | admin | set | status: wp -> open |
| 2016-11-20 18:55:07 | admin | set | messages: + msg8650 |
| 2016-11-20 18:55:07 | admin | set | status: open -> wp |
| 2016-08-07 11:17:37 | admin | set | messages: + msg8459 |
| 2016-08-07 11:17:37 | admin | set | messages: + msg8458 |
| 2016-08-07 11:17:37 | admin | set | status: new -> open |
| 2016-08-02 12:53:51 | admin | set | messages: + msg8300 |
| 2015-12-10 00:00:00 | admin | create | |