Author: marshall
Date: Tue Feb 25 10:11:46 2014
New Revision: 202158

URL: http://llvm.org/viewvc/llvm-project?rev=202158&view=rev
Log:
Implement LWG issue 2301: Mark std::tie as constexpr

Modified:
    libcxx/trunk/include/tuple
    libcxx/trunk/test/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp
    libcxx/trunk/www/cxx1y_status.html

Modified: libcxx/trunk/include/tuple
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/tuple?rev=202158&r1=202157&r2=202158&view=diff
==============================================================================
--- libcxx/trunk/include/tuple (original)
+++ libcxx/trunk/include/tuple Tue Feb 25 10:11:46 2014
@@ -74,7 +74,7 @@ const unspecified ignore;
 
 template <class... T> tuple<V...>  make_tuple(T&&...); // constexpr in C++14
 template <class... T> tuple<ATypes...> forward_as_tuple(T&&...) noexcept; // 
constexpr in C++14
-template <class... T> tuple<T&...> tie(T&...) noexcept;
+template <class... T> tuple<T&...> tie(T&...) noexcept; // constexpr in C++14
 template <class... Tuples> tuple<CTypes...> tuple_cat(Tuples&&... tpls); // 
constexpr in C++14
   
 // 20.4.1.4, tuple helper classes:
@@ -796,7 +796,7 @@ constexpr _T1&& get(tuple<_Args...>&& __
 // tie
 
 template <class ..._Tp>
-inline _LIBCPP_INLINE_VISIBILITY
+inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
 tuple<_Tp&...>
 tie(_Tp&... __t) _NOEXCEPT
 {

Modified: 
libcxx/trunk/test/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp?rev=202158&r1=202157&r2=202158&view=diff
==============================================================================
--- libcxx/trunk/test/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp 
(original)
+++ libcxx/trunk/test/utilities/tuple/tuple.tuple/tuple.creation/tie.pass.cpp 
Tue Feb 25 10:11:46 2014
@@ -27,4 +27,13 @@ int main()
         assert(i == 42);
         assert(s == "C++");
     }
+#if _LIBCPP_STD_VER > 11
+    {
+        static constexpr int i = 42;
+        static constexpr double f = 1.1;
+        constexpr std::tuple<const int &, const double &> t = std::tie(i, f);
+        static_assert ( std::get<0>(t) == 42, "" );
+        static_assert ( std::get<1>(t) == 1.1, "" );
+    }
+#endif
 }

Modified: libcxx/trunk/www/cxx1y_status.html
URL: 
http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/cxx1y_status.html?rev=202158&r1=202157&r2=202158&view=diff
==============================================================================
--- libcxx/trunk/www/cxx1y_status.html (original)
+++ libcxx/trunk/www/cxx1y_status.html Tue Feb 25 10:11:46 2014
@@ -240,7 +240,7 @@
        <tr><td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2258";>2258</a></td><td>a.erase(q1,
 q2) unable to directly return q2</td><td>Issaquah</td><td>Complete</td></tr>
        <tr><td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2263";>2263</a></td><td>Comparing
 iterators and allocator pointers with different 
const-character</td><td>Issaquah</td><td></td></tr>
        <tr><td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2293";>2293</a></td><td>Wrong
 facet used by num_put::do_put</td><td>Issaquah</td><td>Complete</td></tr>
-       <tr><td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2301";>2301</a></td><td>Why
 is std::tie not constexpr?</td><td>Issaquah</td><td></td></tr>
+       <tr><td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2301";>2301</a></td><td>Why
 is std::tie not constexpr?</td><td>Issaquah</td><td>Complete</td></tr>
        <tr><td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2304";>2304</a></td><td>Complexity
 of count in unordered associative 
containers</td><td>Issaquah</td><td>Complete</td></tr>
        <tr><td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2306";>2306</a></td><td>match_results::reference
 should be value_type&, not const 
value_type&</td><td>Issaquah</td><td></td></tr>
        <tr><td><a 
href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#2308";>2308</a></td><td>Clarify
 container destructor requirements w.r.t. 
std::array</td><td>Issaquah</td><td>Complete</td></tr>


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to