[multiple changes]

2005-11-13  Jonathan Wakely  <redi@gcc.gnu.org>

	* include/tr1/boost_shared_ptr.h (get_deleter):
	Declare before shared_ptr.
	(shared_ptr<>): Declare get_deleter as friend.
	(shared_ptr<>:_M_get_deleter): Private.

2005-11-13  Douglas Gregor  <doug.gregor@gmail.com>

	PR libstdc++/24818
        * include/tr1/ref_wrap_iterate.h
        (reference_wrapper::operator()()): Don't dereferene the result of
        get() before calling it; it's already a reference.
        * testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc:
        Test nullary calls to reference_wrappers.

From-SVN: r106862
This commit is contained in:
Paolo Carlini 2005-11-13 12:14:15 +00:00
parent 7a9018e45b
commit 3270a66b55
3 changed files with 30 additions and 1 deletions

View File

@ -1,3 +1,19 @@
2005-11-13 Jonathan Wakely <redi@gcc.gnu.org>
* include/tr1/boost_shared_ptr.h (get_deleter):
Declare before shared_ptr.
(shared_ptr<>): Declare get_deleter as friend.
(shared_ptr<>:_M_get_deleter): Private.
2005-11-13 Douglas Gregor <doug.gregor@gmail.com>
PR libstdc++/24818
* include/tr1/ref_wrap_iterate.h
(reference_wrapper::operator()()): Don't dereferene the result of
get() before calling it; it's already a reference.
* testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc:
Test nullary calls to reference_wrappers.
2005-11-11 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/24808

View File

@ -40,5 +40,5 @@ template<_GLIBCXX_TEMPLATE_PARAMS>
#else
typename result_of<_M_func_type()>::type
operator()() const
{ return (*get())(); }
{ return get()(); }
#endif

View File

@ -56,11 +56,20 @@ struct X
X& operator=(const X&);
};
int seventeen() { return 17; }
struct get_seventeen
{
typedef int result_type;
int operator()() const { return 17; }
};
void test01()
{
using std::tr1::ref;
using std::tr1::cref;
::get_seventeen get_sev;
::X x;
::X* xp = &x;
int (::X::* p_foo)(float) = &::X::foo;
@ -73,9 +82,11 @@ void test01()
// Functions
VERIFY(ref(truncate_float)(pi) == 3);
VERIFY(ref(seventeen)() == 17);
// Function pointers
VERIFY(cref(&truncate_float)(pi) == 3);
VERIFY(cref(&seventeen)() == 17);
// Member function pointers
VERIFY(ref(p_foo)(x, pi) == 3);
@ -92,6 +103,8 @@ void test01()
VERIFY(ref(p_bar)(xp) == 17);
// Function objects
VERIFY(ref(get_sev)() == 17);
VERIFY(cref(get_sev)() == 17);
VERIFY(ref(x)(pi) == 4);
VERIFY(cref(x)(pi) == 5);
}