This patch attempts to re-implement a fix for LWG 2770, but not the actual specified PR.
The PR for 2770 specifies tuple_size<T const> as only conditionally providing a ::value member. However C++17 structured bindings require tuple_size<T const> to be complete only if tuple_size<T> is also complete. Therefore this patch implements only provides the specialization tuple_size<T CV> iff tuple_size<T> is a complete type.
This fixes http://llvm.org/PR31513.
Without this extra enable_if, GCC will diagnose each of these three specializations as ambiguous.