diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-13 12:14:15 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-13 12:14:15 +0000 |
commit | 61aa9b00baf02bb77f70de8a5c7f6cdd5f0037ee (patch) | |
tree | c8cc5cfcec5669c0b74ea511bc46bf29cb509a43 | |
parent | 6c324a0921d62511d798cae1f80bcfeedc0cd5a5 (diff) | |
download | ppe42-gcc-61aa9b00baf02bb77f70de8a5c7f6cdd5f0037ee.tar.gz ppe42-gcc-61aa9b00baf02bb77f70de8a5c7f6cdd5f0037ee.zip |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106862 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libstdc++-v3/ChangeLog | 16 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1/ref_wrap_iterate.h | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc | 13 |
3 files changed, 30 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1d812ccc475..f60ef609999 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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 diff --git a/libstdc++-v3/include/tr1/ref_wrap_iterate.h b/libstdc++-v3/include/tr1/ref_wrap_iterate.h index d94ddc50b31..471547d0a14 100644 --- a/libstdc++-v3/include/tr1/ref_wrap_iterate.h +++ b/libstdc++-v3/include/tr1/ref_wrap_iterate.h @@ -40,5 +40,5 @@ template<_GLIBCXX_TEMPLATE_PARAMS> #else typename result_of<_M_func_type()>::type operator()() const -{ return (*get())(); } +{ return get()(); } #endif diff --git a/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc b/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc index 4fe402a5c5e..b1eb999c6cf 100644 --- a/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc +++ b/libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc @@ -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); } |