Index: include/tuple =================================================================== --- include/tuple +++ include/tuple @@ -70,7 +70,7 @@ void swap(tuple&) noexcept(AND(swap(declval(), declval())...)); }; -const unspecified ignore; +constexpr unspecified ignore; template tuple make_tuple(T&&...); // constexpr in C++14 template tuple forward_as_tuple(T&&...) noexcept; // constexpr in C++14 @@ -1047,11 +1047,11 @@ struct __ignore_t { template - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14 const __ignore_t& operator=(_Tp&&) const {return *this;} }; -namespace { const __ignore_t ignore = __ignore_t(); } +namespace { _LIBCPP_CONSTEXPR_AFTER_CXX14 const __ignore_t ignore = __ignore_t(); } template struct __make_tuple_return_impl Index: test/std/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp =================================================================== --- test/std/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp +++ test/std/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp @@ -22,6 +22,15 @@ #include "test_macros.h" +#if TEST_STD_VER > 14 +template +constexpr auto check_ce_ignore(T ignore) +{ + ignore = 4; + return ignore; +} +#endif + int main() { { @@ -40,4 +49,9 @@ static_assert ( std::get<1>(t) == 1.1, "" ); } #endif +#if TEST_STD_VER > 14 + { + constexpr auto t = check_ce_ignore(std::ignore); + } +#endif } Index: www/cxx1z_status.html =================================================================== --- www/cxx1z_status.html +++ www/cxx1z_status.html @@ -407,7 +407,7 @@ 2767not_fn call_wrapper can form invalid typesIssaquahComplete 2769Redundant const in the return type of any_cast(const any&)IssaquahComplete 2771Broken Effects of some basic_string::compare functions in terms of basic_string_viewIssaquahComplete - 2773Making std::ignore constexprIssaquah + 2773Making std::ignore constexprIssaquahComplete 2777basic_string_view::copy should use char_traits::copyIssaquahComplete 2778basic_string_view is missing constexprIssaquah