diff --git a/include/tuple b/include/tuple
index 6805d8c..744a3ff 100644
--- a/include/tuple
+++ b/include/tuple
@@ -681,7 +681,7 @@
                       <
                          _CheckArgsConstructor<
                             _Dummy
-                         >::template __enable_implicit<_Tp...>(),
+                         >::template __enable_implicit<_Tp const&...>(),
                          bool
                       >::type = false
         >
@@ -699,7 +699,7 @@
                       <
                          _CheckArgsConstructor<
                             _Dummy
-                         >::template __enable_explicit<_Tp...>(),
+                         >::template __enable_explicit<_Tp const&...>(),
                          bool
                       >::type = false
         >
@@ -717,7 +717,7 @@
                       <
                          _CheckArgsConstructor<
                             _Dummy
-                         >::template __enable_implicit<_Tp...>(),
+                         >::template __enable_implicit<_Tp const&...>(),
                          bool
                       >::type = false
         >
@@ -736,7 +736,7 @@
                       <
                          _CheckArgsConstructor<
                             _Dummy
-                         >::template __enable_explicit<_Tp...>(),
+                         >::template __enable_explicit<_Tp const&...>(),
                          bool
                       >::type = false
         >
diff --git a/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp b/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp
index 1bd7d6d..0c93673 100644
--- a/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp
+++ b/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/move.pass.cpp
@@ -35,6 +35,52 @@
     }
 };
 
+// move_only type which triggers the empty base optimization
+struct move_only_ebo {
+  move_only_ebo() = default;
+  move_only_ebo(move_only_ebo&&) = default;
+};
+
+// a move_only type which does not trigger the empty base optimization
+struct move_only_large final {
+  move_only_large() : value(42) {}
+  move_only_large(move_only_large&&) = default;
+  int value;
+};
+
+template <class Elem>
+void test_sfinae() {
+    using Tup = std::tuple<Elem>;
+    using Alloc = std::allocator<void>;
+    using Tag = std::allocator_arg_t;
+    // special members
+    {
+        static_assert(std::is_default_constructible<Tup>::value, "");
+        static_assert(std::is_move_constructible<Tup>::value, "");
+        static_assert(!std::is_copy_constructible<Tup>::value, "");
+        static_assert(!std::is_constructible<Tup, Tup&>::value, "");
+    }
+    // args constructors
+    {
+        static_assert(std::is_constructible<Tup, Elem&&>::value, "");
+        static_assert(!std::is_constructible<Tup, Elem const&>::value, "");
+        static_assert(!std::is_constructible<Tup, Elem&>::value, "");
+    }
+    // uses-allocator special member constructors
+    {
+        static_assert(std::is_constructible<Tup, Tag, Alloc>::value, "");
+        static_assert(std::is_constructible<Tup, Tag, Alloc, Tup&&>::value, "");
+        static_assert(!std::is_constructible<Tup, Tag, Alloc, Tup const&>::value, "");
+        static_assert(!std::is_constructible<Tup, Tag, Alloc, Tup &>::value, "");
+    }
+    // uses-allocator args constructors
+    {
+        static_assert(std::is_constructible<Tup, Tag, Alloc, Elem&&>::value, "");
+        static_assert(!std::is_constructible<Tup, Tag, Alloc, Elem const&>::value, "");
+        static_assert(!std::is_constructible<Tup, Tag, Alloc, Elem &>::value, "");
+    }
+}
+
 int main()
 {
     {
@@ -72,4 +118,8 @@
         d_t d((ConstructsWithTupleLeaf()));
         d_t d2(static_cast<d_t &&>(d));
     }
+    {
+        test_sfinae<move_only_ebo>();
+        test_sfinae<move_only_large>();
+    }
 }
