mirror of git://gcc.gnu.org/git/gcc.git
Fix namespace versioning and remove __detail::__identity helpers
PR libstdc++/79243 * include/bits/c++config (literals::string_view_literals::__7): Add. Only declare versioned namespaces for the relevant C++ dialects. * include/experimental/bits/erase_if.h (fundamentals_v2::__detail): Add versioning macros. * include/experimental/bits/lfts_config.h: (fundamentals_v1::__detail::__7, fundamentals_v2::__detail::__7): Add. * include/experimental/string_view (fundamentals_v2::__detail): Add versioning macros. (fundamentals_v2::__detail::__identity): Remove. (fundamentals_v2::__detail::__idt): Use common_type instead of __detail::__identity. * include/std/string_view (__detail::__identity, __detail::__idt): Likewise. (literals::string_view_literals): Fix nesting of versioning macros. From-SVN: r244945
This commit is contained in:
parent
b3db8d779a
commit
3e5fb20f1f
|
|
@ -1,5 +1,21 @@
|
|||
2017-01-26 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
PR libstdc++/79243
|
||||
* include/bits/c++config (literals::string_view_literals::__7): Add.
|
||||
Only declare versioned namespaces for the relevant C++ dialects.
|
||||
* include/experimental/bits/erase_if.h (fundamentals_v2::__detail):
|
||||
Add versioning macros.
|
||||
* include/experimental/bits/lfts_config.h:
|
||||
(fundamentals_v1::__detail::__7, fundamentals_v2::__detail::__7): Add.
|
||||
* include/experimental/string_view (fundamentals_v2::__detail):
|
||||
Add versioning macros.
|
||||
(fundamentals_v2::__detail::__identity): Remove.
|
||||
(fundamentals_v2::__detail::__idt): Use common_type instead of
|
||||
__detail::__identity.
|
||||
* include/std/string_view (__detail::__identity, __detail::__idt):
|
||||
Likewise.
|
||||
(literals::string_view_literals): Fix nesting of versioning macros.
|
||||
|
||||
PR libstdc++/79190
|
||||
* libsupc++/del_opa.cc (operator delete(void*, std::align_val_t))
|
||||
[!_GLIBCXX_HAVE_ALIGNED_ALLOC && !_GLIBCXX_HAVE_POSIX_MEMALIGN
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue