This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of TS status.

### 2570. [fund.ts.v2] `conjunction` and `disjunction` requirements are too strict

Section: 3.3.3 [fund.ts.v2::meta.logical] Status: TS Submitter: Tim Song Opened: 2015-12-11 Last modified: 2017-07-30

Priority: 2

View all other issues in [fund.ts.v2::meta.logical].

View all issues with TS status.

Discussion:

Addresses: fund.ts.v2

3.3.3 [fund.ts.v2::meta.logical]/2 and /5 impose the following requirement on the arguments of `conjunction` and `disjunction`:

> Every template type argument shall be usable as a base class and shall have a static data member value which is convertible to `bool`, is not hidden, and is unambiguously available in the type.

Since the requirement is unconditional, it applies even to type arguments whose instantiation is not required due to short circuiting. This seems contrary to the design intent, expressed in P0013R1, that it is valid to write `conjunction_v<is_class<T>, is_foo<T>>` even if instantiating `is_foo<T>::value` is ill-formed for non-class types.

[2016-06 Oulu]

Alisdair has a paper in progress addressing this

[2016-08 Chicago]

Ville provided wording for both 2569 and 2570.

Tuesday AM: Move to Tentatively Ready

Proposed resolution: