diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-23 03:17:11 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-23 03:17:11 +0000 |
commit | f8795576746c817acdc9e77ee13184f17744d05b (patch) | |
tree | 91438aa522099078f99fff44746880494507cf5a /libstdc++-v3/include/bits | |
parent | a6ae59cad1e5c0db2704ae6d6b8346584b5599d2 (diff) | |
download | gcc-f8795576746c817acdc9e77ee13184f17744d05b.tar.gz |
2011-07-22 Benjamin Kosnik <bkoz@redhat.com>
Daniel Krugler <daniel.kruegler@googlemail.com>
* include/bits/move.h (move, forward): Mark constexpr.
* include/bits/stl_pair.h (pair): Mark move ctors constexpr.
* testsuite/20_util/pair/make_pair/constexpr.cc: New.
* testsuite/20_util/pair/cons/constexpr.cc: Add tests.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176672 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/bits')
-rw-r--r-- | libstdc++-v3/include/bits/move.h | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_pair.h | 12 |
2 files changed, 9 insertions, 9 deletions
diff --git a/libstdc++-v3/include/bits/move.h b/libstdc++-v3/include/bits/move.h index e82e36d892e..28d2ae1b3ae 100644 --- a/libstdc++-v3/include/bits/move.h +++ b/libstdc++-v3/include/bits/move.h @@ -58,12 +58,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// forward (as per N3143) template<typename _Tp> - inline _Tp&& + inline constexpr _Tp&& forward(typename std::remove_reference<_Tp>::type& __t) noexcept { return static_cast<_Tp&&>(__t); } template<typename _Tp> - inline _Tp&& + inline constexpr _Tp&& forward(typename std::remove_reference<_Tp>::type&& __t) noexcept { static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" @@ -78,7 +78,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @return Same, moved. */ template<typename _Tp> - inline typename std::remove_reference<_Tp>::type&& + inline constexpr typename std::remove_reference<_Tp>::type&& move(_Tp&& __t) noexcept { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); } diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h index 61ebc719040..abd8bd81587 100644 --- a/libstdc++-v3/include/bits/stl_pair.h +++ b/libstdc++-v3/include/bits/stl_pair.h @@ -128,24 +128,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // DR 811. template<class _U1, class = typename enable_if<is_convertible<_U1, _T1>::value>::type> - pair(_U1&& __x, const _T2& __y) + constexpr pair(_U1&& __x, const _T2& __y) : first(std::forward<_U1>(__x)), second(__y) { } template<class _U2, class = typename enable_if<is_convertible<_U2, _T2>::value>::type> - pair(const _T1& __x, _U2&& __y) + constexpr pair(const _T1& __x, _U2&& __y) : first(__x), second(std::forward<_U2>(__y)) { } template<class _U1, class _U2, class = typename enable_if<__and_<is_convertible<_U1, _T1>, is_convertible<_U2, _T2>>::value>::type> - pair(_U1&& __x, _U2&& __y) + constexpr pair(_U1&& __x, _U2&& __y) : first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } template<class _U1, class _U2, class = typename enable_if<__and_<is_convertible<_U1, _T1>, is_convertible<_U2, _T2>>::value>::type> - pair(pair<_U1, _U2>&& __p) + constexpr pair(pair<_U1, _U2>&& __p) : first(std::forward<_U1>(__p.first)), second(std::forward<_U2>(__p.second)) { } @@ -275,8 +275,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #ifdef __GXX_EXPERIMENTAL_CXX0X__ // NB: DR 706. template<class _T1, class _T2> - inline pair<typename __decay_and_strip<_T1>::__type, - typename __decay_and_strip<_T2>::__type> + inline constexpr pair<typename __decay_and_strip<_T1>::__type, + typename __decay_and_strip<_T2>::__type> make_pair(_T1&& __x, _T2&& __y) { typedef typename __decay_and_strip<_T1>::__type __ds_type1; |