summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-13 12:14:15 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-13 12:14:15 +0000
commit61aa9b00baf02bb77f70de8a5c7f6cdd5f0037ee (patch)
treec8cc5cfcec5669c0b74ea511bc46bf29cb509a43 /libstdc++-v3
parent6c324a0921d62511d798cae1f80bcfeedc0cd5a5 (diff)
downloadppe42-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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog16
-rw-r--r--libstdc++-v3/include/tr1/ref_wrap_iterate.h2
-rw-r--r--libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc13
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);
}
OpenPOWER on IntegriCloud