diff options
author | Jason Merrill <jason@redhat.com> | 2011-05-20 14:01:22 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-05-20 14:01:22 -0400 |
commit | 94df301fa033641561145d44ed48cf4c85d43a2c (patch) | |
tree | a133483f2142f1c02de48fd4af4865636ad9ed75 /libstdc++-v3 | |
parent | 6e04dcd56f7d94288467234f065fca6006761cfe (diff) | |
download | gcc-94df301fa033641561145d44ed48cf4c85d43a2c.tar.gz |
re PR c++/24163 (dependent Base class scope examined during unqualified name lookup in template)
PR c++/24163
PR c++/29131
gcc/cp/
* pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
unqualified lookup.
* semantics.c (perform_koenig_lookup): Add complain parm.
* cp-tree.h: Adjust.
* parser.c (cp_parser_postfix_expression): Adjust.
(cp_parser_perform_range_for_lookup): Adjust.
libstdc++-v3/
* include/ext/pb_ds/assoc_container.hpp: Explicitly qualify calls to
functions from dependent bases.
* include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Likewise.
* include/ext/pb_ds/detail/rb_tree_map_/
split_join_fn_imps.hpp: Likewise.
* include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Likewise.
* include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Likewise.
* include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Likewise.
* include/ext/pb_ds/detail/splay_tree_/
split_join_fn_imps.hpp: Likewise.
* include/ext/pb_ds/detail/tree_policy/
order_statistics_imp.hpp: Likewise.
* include/ext/pb_ds/detail/trie_policy/
prefix_search_node_update_imp.hpp: Likewise.
* include/ext/rc_string_base.h: Likewise.
* include/ext/rope: Likewise.
* include/ext/ropeimpl.h: Likewise.
* testsuite/util/exception/safety.h: Likewise.
* testsuite/util/native_type/native_priority_queue.hpp: Likewise.
* testsuite/util/testsuite_io.h: Likewise.
* include/std/functional: Declare mem_fn earlier.
* include/tr1/functional: Likewise.
* include/tr1/exp_integral.tcc: Declare __expint_E1 earlier.
From-SVN: r173965
Diffstat (limited to 'libstdc++-v3')
19 files changed, 89 insertions, 55 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index f6b9159d235..68edbdba5c4 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,29 @@ +2011-05-20 Jason Merrill <jason@redhat.com> + + * include/ext/pb_ds/assoc_container.hpp: Explicitly qualify calls to + functions from dependent bases. + * include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp: Likewise. + * include/ext/pb_ds/detail/rb_tree_map_/ + split_join_fn_imps.hpp: Likewise. + * include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp: Likewise. + * include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp: Likewise. + * include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp: Likewise. + * include/ext/pb_ds/detail/splay_tree_/ + split_join_fn_imps.hpp: Likewise. + * include/ext/pb_ds/detail/tree_policy/ + order_statistics_imp.hpp: Likewise. + * include/ext/pb_ds/detail/trie_policy/ + prefix_search_node_update_imp.hpp: Likewise. + * include/ext/rc_string_base.h: Likewise. + * include/ext/rope: Likewise. + * include/ext/ropeimpl.h: Likewise. + * testsuite/util/exception/safety.h: Likewise. + * testsuite/util/native_type/native_priority_queue.hpp: Likewise. + * testsuite/util/testsuite_io.h: Likewise. + * include/std/functional: Declare mem_fn earlier. + * include/tr1/functional: Likewise. + * include/tr1/exp_integral.tcc: Declare __expint_E1 earlier. + 2011-05-19 Paolo Carlini <paolo.carlini@oracle.com> * include/std/tuple (tuple_element<__i, const _Tp>, diff --git a/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp b/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp index 9cec3b72c54..12a3fc501c9 100644 --- a/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp +++ b/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp @@ -234,7 +234,7 @@ namespace __gnu_pbds template<typename It> cc_hash_table(It first, It last, const hash_fn& h) : base_type(h) - { copy_from_range(first, last); } + { this->copy_from_range(first, last); } // Constructor taking __iterators to a range of value_types and // some policy objects The value_types between first_it and @@ -245,7 +245,7 @@ namespace __gnu_pbds template<typename It> cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e) : base_type(h, e) - { copy_from_range(first, last); } + { this->copy_from_range(first, last); } // Constructor taking __iterators to a range of value_types and // some policy objects The value_types between first_it and @@ -258,7 +258,7 @@ namespace __gnu_pbds cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e, const comb_hash_fn& ch) : base_type(h, e, ch) - { copy_from_range(first, last); } + { this->copy_from_range(first, last); } // Constructor taking __iterators to a range of value_types and // some policy objects The value_types between first_it and @@ -272,7 +272,7 @@ namespace __gnu_pbds cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e, const comb_hash_fn& ch, const resize_policy& rp) : base_type(h, e, ch, rp) - { copy_from_range(first, last); } + { this->copy_from_range(first, last); } cc_hash_table(const cc_hash_table& other) : base_type((const base_type&)other) diff --git a/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp index 5a335a6dd47..0ef925f079e 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp @@ -43,7 +43,7 @@ inline bool PB_DS_CLASS_C_DEC:: erase(const_key_reference r_key) { - point_iterator it = find(r_key); + point_iterator it = this->find(r_key); if (it == base_type::end()) return false; erase(it); @@ -121,7 +121,7 @@ void PB_DS_CLASS_C_DEC:: remove_node(node_pointer p_z) { - update_min_max_for_erased_node(p_z); + this->update_min_max_for_erased_node(p_z); node_pointer p_y = p_z; node_pointer p_x = 0; node_pointer p_new_x_parent = 0; @@ -185,7 +185,7 @@ remove_node(node_pointer p_z) p_y = p_z; } - update_to_top(p_new_x_parent, (node_update* )this); + this->update_to_top(p_new_x_parent, (node_update* )this); if (p_y->m_red) return; @@ -238,7 +238,7 @@ remove_fixup(node_pointer p_x, node_pointer p_new_x_parent) p_w->m_p_right->m_red = false; base_type::rotate_left(p_new_x_parent); - update_to_top(p_new_x_parent, (node_update* )this); + this->update_to_top(p_new_x_parent, (node_update* )this); break; } } @@ -279,7 +279,7 @@ remove_fixup(node_pointer p_x, node_pointer p_new_x_parent) p_w->m_p_left->m_red = false; base_type::rotate_right(p_new_x_parent); - update_to_top(p_new_x_parent, (node_update* )this); + this->update_to_top(p_new_x_parent, (node_update* )this); break; } } diff --git a/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp index a0d079b142f..198caca8868 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp @@ -246,7 +246,7 @@ split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other) PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) PB_DS_STRUCT_ONLY_ASSERT_VALID(other) - node_pointer p_nd = upper_bound(r_key).m_p_nd; + node_pointer p_nd = this->upper_bound(r_key).m_p_nd; do { node_pointer p_next_nd = p_nd->m_p_parent; @@ -292,7 +292,7 @@ split_at_node(node_pointer p_nd, PB_DS_CLASS_C_DEC& other) if (p_l != 0) p_l->m_p_parent = p_parent; - update_to_top(p_parent, (node_update* )this); + this->update_to_top(p_parent, (node_update* )this); if (!p_nd->m_red) remove_fixup(p_l, p_parent); diff --git a/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp index 207577cf492..22f8e68c440 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp @@ -142,7 +142,7 @@ erase_node(node_pointer p_nd) if (p_l != 0) p_l->m_p_parent = p_target_r; PB_DS_ASSERT_VALID((*this)) - apply_update(p_target_r, (node_update* )this); + this->apply_update(p_target_r, (node_update* )this); } PB_DS_CLASS_T_DEC diff --git a/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp index 97441c9df46..4e1179ead2f 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp @@ -90,5 +90,5 @@ insert_leaf_imp(const_reference r_value) while (p_nd->m_p_right != 0) p_nd = p_nd->m_p_right; - return std::make_pair(insert_leaf_new(r_value, p_nd, false), true); + return std::make_pair(this->insert_leaf_new(r_value, p_nd, false), true); } diff --git a/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp index ec38cf81314..b1523662c43 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp @@ -274,9 +274,9 @@ splay_zz_end(node_pointer p_nd, node_pointer p_parent, if (p_nd->m_p_parent == base_type::m_p_head) base_type::m_p_head->m_p_parent = p_nd; - apply_update(p_grandparent, (node_update* )this); - apply_update(p_parent, (node_update* )this); - apply_update(p_nd, (node_update* )this); + this->apply_update(p_grandparent, (node_update* )this); + this->apply_update(p_parent, (node_update* )this); + this->apply_update(p_nd, (node_update* )this); PB_DS_ASSERT_BASE_NODE_CONSISTENT(p_nd) } diff --git a/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp b/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp index cb04d656933..fe4cfa57bf7 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp @@ -66,7 +66,7 @@ join(PB_DS_CLASS_C_DEC& other) base_type::m_p_head->m_p_parent = p_target_r; p_target_r->m_p_parent = base_type::m_p_head; - apply_update(p_target_r, (node_update* )this); + this->apply_update(p_target_r, (node_update* )this); base_type::join_finish(other); @@ -89,7 +89,7 @@ split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other) return; } - node_pointer p_upper_bound = upper_bound(r_key).m_p_nd; + node_pointer p_upper_bound = this->upper_bound(r_key).m_p_nd; _GLIBCXX_DEBUG_ASSERT(p_upper_bound != 0); splay(p_upper_bound); @@ -103,7 +103,7 @@ split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other) other.m_p_head->m_p_parent = p_upper_bound; p_upper_bound->m_p_parent = other.m_p_head; p_upper_bound->m_p_left = 0; - apply_update(p_upper_bound, (node_update* )this); + this->apply_update(p_upper_bound, (node_update* )this); base_type::split_finish(other); PB_DS_ASSERT_VALID((*this)) diff --git a/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp b/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp index 1d33767a2c0..d3b27925f7e 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp @@ -96,9 +96,9 @@ order_of_key(const_key_reference r_key) const { const_node_iterator l_it = it.get_l_child(); - if (r_cmp_fn(r_key, extract_key(*(*it)))) + if (r_cmp_fn(r_key, this->extract_key(*(*it)))) it = l_it; - else if (r_cmp_fn(extract_key(*(*it)), r_key)) + else if (r_cmp_fn(this->extract_key(*(*it)), r_key)) { ord += (l_it == end_it)? diff --git a/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp b/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp index cdd8989295c..ff2799e3e95 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp @@ -104,9 +104,9 @@ prefix_range(typename e_access_traits::const_iterator b, typename e_access_trait if (common_range_length >= given_range_length) { - iterator ret_b = leftmost_it(nd_it); + iterator ret_b = this->leftmost_it(nd_it); - iterator ret_e = rightmost_it(nd_it); + iterator ret_e = this->rightmost_it(nd_it); return (std::make_pair(ret_b, ++ret_e)); } diff --git a/libstdc++-v3/include/ext/rc_string_base.h b/libstdc++-v3/include/ext/rc_string_base.h index 4a27ff6ef5b..afd4d9e3688 100644 --- a/libstdc++-v3/include/ext/rc_string_base.h +++ b/libstdc++-v3/include/ext/rc_string_base.h @@ -461,7 +461,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __alloc); if (_M_info._M_length) - _S_copy(__r->_M_refdata(), _M_refdata(), _M_info._M_length); + __rc_string_base::_S_copy(__r->_M_refdata(), _M_refdata(), _M_info._M_length); __r->_M_set_length(_M_info._M_length); return __r->_M_refdata(); @@ -569,7 +569,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Check for out_of_range and length_error exceptions. _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a); __try - { _S_copy_chars(__r->_M_refdata(), __beg, __end); } + { __rc_string_base::_S_copy_chars(__r->_M_refdata(), __beg, __end); } __catch(...) { __r->_M_destroy(__a); @@ -590,7 +590,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Check for out_of_range and length_error exceptions. _Rep* __r = _Rep::_S_create(__n, size_type(0), __a); if (__n) - _S_assign(__r->_M_refdata(), __n, __c); + __rc_string_base::_S_assign(__r->_M_refdata(), __n, __c); __r->_M_set_length(__n); return __r->_M_refdata(); @@ -659,11 +659,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_capacity(), _M_get_allocator()); if (__pos) - _S_copy(__r->_M_refdata(), _M_data(), __pos); + this->_S_copy(__r->_M_refdata(), _M_data(), __pos); if (__s && __len2) - _S_copy(__r->_M_refdata() + __pos, __s, __len2); + this->_S_copy(__r->_M_refdata() + __pos, __s, __len2); if (__how_much) - _S_copy(__r->_M_refdata() + __pos + __len2, + this->_S_copy(__r->_M_refdata() + __pos + __len2, _M_data() + __pos + __len1, __how_much); _M_dispose(); @@ -685,9 +685,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_get_allocator()); if (__pos) - _S_copy(__r->_M_refdata(), _M_data(), __pos); + this->_S_copy(__r->_M_refdata(), _M_data(), __pos); if (__how_much) - _S_copy(__r->_M_refdata() + __pos, + this->_S_copy(__r->_M_refdata() + __pos, _M_data() + __pos + __n, __how_much); _M_dispose(); @@ -696,7 +696,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION else if (__how_much && __n) { // Work in-place. - _S_move(_M_data() + __pos, + this->_S_move(_M_data() + __pos, _M_data() + __pos + __n, __how_much); } diff --git a/libstdc++-v3/include/ext/rope b/libstdc++-v3/include/ext/rope index 42921516e40..5e82811757c 100644 --- a/libstdc++-v3/include/ext/rope +++ b/libstdc++-v3/include/ext/rope @@ -729,7 +729,7 @@ protected: if (_M_data != this->_M_c_string) this->_M_free_c_string(); - __STL_FREE_STRING(_M_data, this->_M_size, this->_M_get_allocator()); + this->__STL_FREE_STRING(_M_data, this->_M_size, this->_M_get_allocator()); } #endif protected: @@ -1170,7 +1170,7 @@ protected: operator*() { if (0 == this->_M_buf_ptr) - _S_setcache(*this); + this->_S_setcache(*this); return *this->_M_buf_ptr; } @@ -1299,7 +1299,7 @@ protected: _M_root_rope(__r) { _RopeRep::_S_ref(this->_M_root); if (!(__r -> empty())) - _S_setcache(*this); + this->_S_setcache(*this); } void _M_check(); diff --git a/libstdc++-v3/include/ext/ropeimpl.h b/libstdc++-v3/include/ext/ropeimpl.h index 467b8fd93d2..3ee06104c60 100644 --- a/libstdc++-v3/include/ext/ropeimpl.h +++ b/libstdc++-v3/include/ext/ropeimpl.h @@ -380,7 +380,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Rope_RopeLeaf<_CharT, _Alloc>* __l = (_Rope_RopeLeaf<_CharT, _Alloc>*)this; __l->_Rope_RopeLeaf<_CharT, _Alloc>::~_Rope_RopeLeaf(); - _L_deallocate(__l, 1); + this->_L_deallocate(__l, 1); break; } case __detail::_S_concat: @@ -389,7 +389,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION = (_Rope_RopeConcatenation<_CharT, _Alloc>*)this; __c->_Rope_RopeConcatenation<_CharT, _Alloc>:: ~_Rope_RopeConcatenation(); - _C_deallocate(__c, 1); + this->_C_deallocate(__c, 1); break; } case __detail::_S_function: @@ -397,7 +397,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Rope_RopeFunction<_CharT, _Alloc>* __f = (_Rope_RopeFunction<_CharT, _Alloc>*)this; __f->_Rope_RopeFunction<_CharT, _Alloc>::~_Rope_RopeFunction(); - _F_deallocate(__f, 1); + this->_F_deallocate(__f, 1); break; } case __detail::_S_substringfn: @@ -406,7 +406,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION (_Rope_RopeSubstring<_CharT, _Alloc>*)this; __ss->_Rope_RopeSubstring<_CharT, _Alloc>:: ~_Rope_RopeSubstring(); - _S_deallocate(__ss, 1); + this->_S_deallocate(__ss, 1); break; } } @@ -430,7 +430,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { size_t __old_len = __r->_M_size; _CharT* __new_data = (_CharT*) - _Data_allocate(_S_rounded_up_size(__old_len + __len)); + rope::_Data_allocate(_S_rounded_up_size(__old_len + __len)); _RopeLeaf* __result; uninitialized_copy_n(__r->_M_data, __old_len, __new_data); @@ -511,7 +511,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } __catch(...) { - _C_deallocate(__result,1); + rope::_C_deallocate(__result,1); __throw_exception_again; } // In case of exception, we need to deallocate @@ -814,7 +814,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION if (__result_len > __lazy_threshold) goto lazy; __section = (_CharT*) - _Data_allocate(_S_rounded_up_size(__result_len)); + rope::_Data_allocate(_S_rounded_up_size(__result_len)); __try { (*(__f->_M_fn))(__start, __result_len, __section); } __catch(...) diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional index f8ea41cc3ee..40cf87030b5 100644 --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -62,6 +62,12 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION + template<typename _MemberPointer> + class _Mem_fn; + template<typename _Tp, typename _Class> + _Mem_fn<_Tp _Class::*> + mem_fn(_Tp _Class::*); + _GLIBCXX_HAS_NESTED_TYPE(result_type) /// If we have found a result_type, extract it. @@ -496,9 +502,6 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type) // @} group functors - template<typename _MemberPointer> - class _Mem_fn; - /** * Derives from @c unary_function or @c binary_function, or perhaps * nothing, depending on the number of arguments provided. The diff --git a/libstdc++-v3/include/tr1/exp_integral.tcc b/libstdc++-v3/include/tr1/exp_integral.tcc index cf3bd63536b..6a49b354cae 100644 --- a/libstdc++-v3/include/tr1/exp_integral.tcc +++ b/libstdc++-v3/include/tr1/exp_integral.tcc @@ -59,6 +59,8 @@ namespace tr1 { _GLIBCXX_BEGIN_NAMESPACE_VERSION + template<typename _Tp> _Tp __expint_E1(const _Tp); + /** * @brief Return the exponential integral @f$ E_1(x) @f$ * by series summation. This should be good diff --git a/libstdc++-v3/include/tr1/functional b/libstdc++-v3/include/tr1/functional index 31e72d63ab5..7651326955a 100644 --- a/libstdc++-v3/include/tr1/functional +++ b/libstdc++-v3/include/tr1/functional @@ -52,6 +52,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _MemberPointer> class _Mem_fn; + template<typename _Tp, typename _Class> + _Mem_fn<_Tp _Class::*> + mem_fn(_Tp _Class::*); /** * Actual implementation of _Has_result_type, which uses SFINAE to diff --git a/libstdc++-v3/testsuite/util/exception/safety.h b/libstdc++-v3/testsuite/util/exception/safety.h index 9468bffd8d5..b85f7fe4e5f 100644 --- a/libstdc++-v3/testsuite/util/exception/safety.h +++ b/libstdc++-v3/testsuite/util/exception/safety.h @@ -1196,20 +1196,20 @@ namespace __gnu_test // constructor or assignment operator of value_type throws. if (!traits<container_type>::has_throwing_erase::value) { - _M_erasep(_M_container); - _M_eraser(_M_container); + this->_M_erasep(_M_container); + this->_M_eraser(_M_container); } - _M_popf(_M_container); - _M_popb(_M_container); + this->_M_popf(_M_container); + this->_M_popb(_M_container); - _M_iops(_M_container); - _M_ciops(_M_container); + this->_M_iops(_M_container); + this->_M_ciops(_M_container); - _M_swap(_M_container); + this->_M_swap(_M_container); // Last. - _M_clear(_M_container); + this->_M_clear(_M_container); } } }; diff --git a/libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp b/libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp index 4367fca3016..dad913fa0ab 100644 --- a/libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp +++ b/libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp @@ -188,7 +188,7 @@ namespace __gnu_pbds modify(const_reference r_old, const_reference r_new) { erase(r_old); - push(r_new); + this->push(r_new); } void diff --git a/libstdc++-v3/testsuite/util/testsuite_io.h b/libstdc++-v3/testsuite/util/testsuite_io.h index 681448aa51f..4251b710715 100644 --- a/libstdc++-v3/testsuite/util/testsuite_io.h +++ b/libstdc++-v3/testsuite/util/testsuite_io.h @@ -144,7 +144,7 @@ namespace __gnu_test { p[0] = char_type('s'); p[1] = char_type(); - setg(p, p, p + 1); + this->setg(p, p, p + 1); } virtual int_type underflow() |