PR go/83102 relax std::set checks for invocable comparison object

PR go/83102
	* include/bits/stl_tree.h (_Rb_tree): Relax invocable checks for
	comparison object pre-C++17.

From-SVN: r255052
This commit is contained in:
Jonathan Wakely 2017-11-22 11:06:15 +00:00 committed by Jonathan Wakely
parent aaa49b45f6
commit e350134d72
2 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2017-11-22 Jonathan Wakely <jwakely@redhat.com>
PR go/83102
* include/bits/stl_tree.h (_Rb_tree): Relax invocable checks for
comparison object pre-C++17.
2017-11-21 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/48101

View File

@ -449,9 +449,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits;
#if __cplusplus >= 201103L
static_assert(__is_invocable<const _Compare&, const _Key&, const _Key&>{},
static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{},
"comparison object must be invocable with two arguments of key type");
#endif
# if __cplusplus >= 201703L
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 2542. Missing const requirements for associative containers
static_assert(is_invocable_v<const _Compare&, const _Key&, const _Key&>,
"comparison object must be invocable as const");
# endif // C++17
#endif // C++11
protected:
typedef _Rb_tree_node_base* _Base_ptr;