HomePhabricator

[Sema] Implement DR2386 for C++17 structured binding

Description

[Sema] Implement DR2386 for C++17 structured binding

Allow implementations to provide complete definitions of
std::tuple_size<T>, but to omit the 'value' member to signal that T is
not tuple-like. The Microsoft standard library implements
std::tuple_size<const T> this way.

If the value member exists, clang still validates that it is an ICE, but
if it does not, then the type is considered to not be tuple-like.

Fixes PR33236

Reviewers: rsmith

Differential Revision: https://reviews.llvm.org/D66040

Details

Committed
rnkAug 15 2019, 12:45 PM
Differential Revision
D66040: [Sema] Implement DR2386 for C++17 structured binding
Parents
rL369042: [WebAssembly] Correctly handle va_arg of zero-sized structures
Branches
Unknown
Tags
Unknown