View | Details | Return to bug 70437
Collapse All | Expand All

(-)a/libstdc++-v3/include/bits/stl_pair.h (-8 / +24 lines)
Lines 90-118 _GLIBCXX_BEGIN_NAMESPACE_VERSION Link Here
90
  template <typename _T1, typename _T2, typename _U1, typename _U2>
90
  template <typename _T1, typename _T2, typename _U1, typename _U2>
91
  constexpr bool _ConstructiblePair()
91
  constexpr bool _ConstructiblePair()
92
  {
92
  {
93
    return __and_<is_constructible<_T1, const _U1&>,
93
    return __and_<__or_<is_same<typename decay<_T1>::type,
94
		  is_constructible<_T2, const _U2&>>::value;
94
				typename decay<_U1>::type>,
95
			is_constructible<_T1, const _U1&>>,
96
		  __or_<is_same<typename decay<_T2>::type,
97
				typename decay<_U2>::type>,
98
			is_constructible<_T2, const _U2&>>>::value;
95
  }
99
  }
96
100
97
  template <typename _T1, typename _T2, typename _U1, typename _U2>
101
  template <typename _T1, typename _T2, typename _U1, typename _U2>
98
  constexpr bool _ImplicitlyConvertiblePair()
102
  constexpr bool _ImplicitlyConvertiblePair()
99
  {
103
  {
100
    return __and_<is_convertible<const _U1&, _T1>,
104
    return __and_<__or_<is_same<typename decay<_T1>::type,
101
		  is_convertible<const _U2&, _T2>>::value;
105
				typename decay<_U1>::type>,
106
			is_convertible<const _U1&, _T1>>,
107
		  __or_<is_same<typename decay<_T2>::type,
108
				typename decay<_U2>::type>,
109
		       is_convertible<const _U2&, _T2>>>::value;
102
  }
110
  }
103
111
104
  template <typename _T1, typename _T2, typename _U1, typename _U2>
112
  template <typename _T1, typename _T2, typename _U1, typename _U2>
105
  constexpr bool _MoveConstructiblePair()
113
  constexpr bool _MoveConstructiblePair()
106
  {
114
  {
107
    return __and_<is_constructible<_T1, _U1&&>,
115
    return __and_<__or_<is_same<typename decay<_T1>::type,
108
		  is_constructible<_T2, _U2&&>>::value;
116
				typename decay<_U1>::type>,
117
			is_constructible<_T1, _U1&&>>,
118
		  __or_<is_same<typename decay<_T2>::type,
119
				typename decay<_U2>::type>,
120
			is_constructible<_T2, _U2&&>>>::value;
109
  }
121
  }
110
122
111
  template <typename _T1, typename _T2, typename _U1, typename _U2>
123
  template <typename _T1, typename _T2, typename _U1, typename _U2>
112
  constexpr bool _ImplicitlyMoveConvertiblePair()
124
  constexpr bool _ImplicitlyMoveConvertiblePair()
113
  {
125
  {
114
    return __and_<is_convertible<_U1&&, _T1>,
126
    return __and_<__or_<is_same<typename decay<_T1>::type,
115
		  is_convertible<_U2&&, _T2>>::value;
127
				typename decay<_U1>::type>,
128
			is_convertible<_U1&&, _T1>>,
129
		  __or_<is_same<typename decay<_T2>::type,
130
				typename decay<_U2>::type>,
131
		       is_convertible<_U2&&, _T2>>>::value;
116
  }
132
  }
117
133
118
134

Return to bug 70437