@@ -179,7 +179,9 @@
namespace __profile { }
namespace __cxx1998 { }
- namespace __detail { }
+ namespace __detail {
+ namespace __variant { } // C++17
+ }
namespace rel_ops { }
@@ -194,14 +196,15 @@
namespace decimal { }
- namespace chrono { }
- namespace placeholders { }
- namespace regex_constants { }
- namespace this_thread { }
- inline namespace literals {
- inline namespace chrono_literals { }
- inline namespace complex_literals { }
- inline namespace string_literals { }
+ namespace chrono { } // C++11
+ namespace placeholders { } // C++11
+ namespace regex_constants { } // C++11
+ namespace this_thread { } // C++11
+ inline namespace literals { // C++14
+ inline namespace chrono_literals { } // C++14
+ inline namespace complex_literals { } // C++14
+ inline namespace string_literals { } // C++14
+ inline namespace string_view_literals { } // C++17
}
}
@@ -282,20 +285,29 @@ namespace std
namespace decimal { inline namespace __7 { } }
+#if __cplusplus >= 201103L
namespace chrono { inline namespace __7 { } }
namespace placeholders { inline namespace __7 { } }
namespace regex_constants { inline namespace __7 { } }
namespace this_thread { inline namespace __7 { } }
+#if __cplusplus >= 201402L
inline namespace literals {
inline namespace chrono_literals { inline namespace __7 { } }
inline namespace complex_literals { inline namespace __7 { } }
inline namespace string_literals { inline namespace __7 { } }
+#if __cplusplus > 201402L
+ inline namespace string_view_literals { inline namespace __7 { } }
+#endif // C++17
}
+#endif // C++14
+#endif // C++11
namespace __detail {
inline namespace __7 { }
+#if __cplusplus > 201402L
namespace __variant { inline namespace __7 { } }
+#endif
}
}
@@ -43,9 +43,9 @@ namespace experimental
{
inline namespace fundamentals_v2
{
-
namespace __detail
{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Container, typename _Predicate>
void
__erase_nodes_if(_Container& __cont, _Predicate __pred)
@@ -59,9 +59,8 @@ inline namespace fundamentals_v2
++__iter;
}
}
- }
-
-
+_GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace __detail
} // inline namespace fundamentals_v2
} // namespace experimental
} // namespace std
@@ -46,10 +46,14 @@ inline namespace fundamentals_v2 { inline namespace __7 { } }
namespace experimental
{
-inline namespace fundamentals_v1 { inline namespace __7 { } }
+inline namespace fundamentals_v1 {
+ inline namespace __7 { }
+ namespace __detail { inline namespace __7 { } }
+}
inline namespace fundamentals_v2 {
inline namespace __7 { }
namespace pmr { inline namespace __7 { } }
+ namespace __detail { inline namespace __7 { } }
} // namespace fundamentals_v2
inline namespace literals { inline namespace string_view_literals {
inline namespace __7 { }
@@ -434,24 +434,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
const _CharT* _M_str;
};
+_GLIBCXX_END_NAMESPACE_VERSION
// [string.view.comparison], non-member basic_string_view comparison functions
namespace __detail
{
- // Identity transform to make ADL work with just one argument.
- // See n3766.html.
- template<typename _Tp = void>
- struct __identity
- { typedef _Tp type; };
-
- template<>
- struct __identity<void>;
-
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+ // Identity transform to create a non-deduced context, so that only one
+ // argument participates in template argument deduction and the other
+ // argument gets implicitly converted to the deduced type. See n3766.html.
template<typename _Tp>
- using __idt = typename __identity<_Tp>::type;
+ using __idt = common_type_t<_Tp>;
+_GLIBCXX_END_NAMESPACE_VERSION
}
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
template<typename _CharT, typename _Traits>
inline bool
operator==(basic_string_view<_CharT, _Traits> __x,
@@ -430,20 +430,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_GLIBCXX_END_NAMESPACE_VERSION
// [string.view.comparison], non-member basic_string_view comparison function
+
namespace __detail
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
- // Identity transform to make ADL work with just one argument.
- // See n3766.html.
- template<typename _Tp = void>
- struct __identity
- { typedef _Tp type; };
-
- template<>
- struct __identity<void>;
-
+ // Identity transform to create a non-deduced context, so that only one
+ // argument participates in template argument deduction and the other
+ // argument gets implicitly converted to the deduced type. See n3766.html.
template<typename _Tp>
- using __idt = typename __identity<_Tp>::type;
+ using __idt = common_type_t<_Tp>;
_GLIBCXX_END_NAMESPACE_VERSION
}
@@ -639,12 +634,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct __is_fast_hash<hash<u32string_view>> : std::false_type
{ };
#endif
+_GLIBCXX_END_NAMESPACE_VERSION
inline namespace literals
{
inline namespace string_view_literals
{
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
inline constexpr basic_string_view<char>
operator""sv(const char* __str, size_t __len)
@@ -666,11 +662,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ return basic_string_view<char32_t>{__str, __len}; }
#endif
- _GLIBCXX_END_NAMESPACE_VERSION
+_GLIBCXX_END_NAMESPACE_VERSION
} // namespace string_literals
} // namespace literals
-_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#include <bits/string_view.tcc>