Implement LWG 2770 - Make tuple_size<T> defined for all T

llvm-svn: 286779
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 237158926663f31f2fcdb02cfedc0da19d6437f6
diff --git a/include/__tuple b/include/__tuple
index caa427a..775d734 100644
--- a/include/__tuple
+++ b/include/__tuple
@@ -22,7 +22,7 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_size;
+template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_size {};
 
 template <class _Tp>
 class _LIBCPP_TYPE_VIS_ONLY tuple_size<const _Tp>
diff --git a/include/tuple b/include/tuple
index 9f6661f..251443e 100644
--- a/include/tuple
+++ b/include/tuple
@@ -84,7 +84,7 @@
   constexpr T make_from_tuple(Tuple&& t); // C++17
 
 // 20.4.1.4, tuple helper classes:
-template <class T> class tuple_size; // undefined
+template <class T> class tuple_size;
 template <class... T> class tuple_size<tuple<T...>>;
 template <class T>
  constexpr size_t tuple_size_v = tuple_size<T>::value; // C++17