[multiple changes]
authorPaolo Carlini <paolo@gcc.gnu.org>
Sun, 13 Nov 2005 12:14:15 +0000 (12:14 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sun, 13 Nov 2005 12:14:15 +0000 (12:14 +0000)
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

libstdc++-v3/ChangeLog
libstdc++-v3/include/tr1/ref_wrap_iterate.h
libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc

index 1d812ccc475416b662cbe3a8e9b9422a7a8d068a..f60ef609999f865d78dea40a47ac5bd375953bb2 100644 (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
index d94ddc50b3116b55bda40f126edffdea7ea93895..471547d0a14bcdcb11593ee79e014ceaf61d20c0 100644 (file)
@@ -40,5 +40,5 @@ template<_GLIBCXX_TEMPLATE_PARAMS>
 #else
 typename result_of<_M_func_type()>::type
 operator()() const
-{ return (*get())(); }
+{ return get()(); }
 #endif
index 4fe402a5c5e3bf55a6afe12adeaff3545b10da38..b1eb999c6cf2328a77711a4aa8accda69494e662 100644 (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);
 }