aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely.gcc@gmail.com>2010-11-10 10:09:03 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2010-11-10 10:09:03 +0000
commitef40b371064e5a1e26e26b3885ee0e0a5cb64b56 (patch)
tree00ceb29ad8f74f8ede11d4f21ca49dd9b720de88
parentc6dfaad54e66c3923075b7a0471e2ed1880b4ee0 (diff)
downloadgcc-ef40b371064e5a1e26e26b3885ee0e0a5cb64b56.zip
gcc-ef40b371064e5a1e26e26b3885ee0e0a5cb64b56.tar.gz
gcc-ef40b371064e5a1e26e26b3885ee0e0a5cb64b56.tar.bz2
unique_ptr.h: Use static_assert in constexpr constructors.
2010-11-10 Jonathan Wakely <jwakely.gcc@gmail.com> * include/bits/unique_ptr.h: Use static_assert in constexpr constructors. * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Remove xfails. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error line number. From-SVN: r166525
-rw-r--r--libstdc++-v3/ChangeLog15
-rw-r--r--libstdc++-v3/include/bits/unique_ptr.h13
-rw-r--r--libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc8
-rw-r--r--libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc2
4 files changed, 28 insertions, 10 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 51cf2eb..ab60cb3 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2010-11-10 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/unique_ptr.h: Use static_assert in constexpr
+ constructors.
+ * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Remove xfails.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
+ line number.
+
2010-11-09 François Dumont <francois.cppdevs@free.fr>
Johannes Singler <singler@kit.edu>
@@ -15,6 +23,13 @@
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error
line number.
+2010-11-08 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/unique_ptr.h: Move misplaced static_assert and use
+ tuple's constexpr constructor in constexpr constructors.
+ * testsuite/20_util/unique_ptr/cons/ptr_deleter.cc: New.
+ * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: New.
+
2010-11-08 Benjamin Kosnik <bkoz@redhat.com>
* doc/doxygen/user.cfg.in: Adjust scanned includes.
diff --git a/libstdc++-v3/include/bits/unique_ptr.h b/libstdc++-v3/include/bits/unique_ptr.h
index ff1a925..7436798 100644
--- a/libstdc++-v3/include/bits/unique_ptr.h
+++ b/libstdc++-v3/include/bits/unique_ptr.h
@@ -109,7 +109,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Constructors.
constexpr unique_ptr()
: _M_t()
- { }
+ { static_assert(!std::is_pointer<deleter_type>::value,
+ "constructed with null function pointer deleter"); }
explicit
unique_ptr(pointer __p)
@@ -130,7 +131,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
constexpr unique_ptr(nullptr_t)
: _M_t()
- { }
+ { static_assert(!std::is_pointer<deleter_type>::value,
+ "constructed with null function pointer deleter"); }
// Move constructors.
unique_ptr(unique_ptr&& __u)
@@ -269,7 +271,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
// Constructors.
constexpr unique_ptr()
: _M_t()
- { }
+ { static_assert(!std::is_pointer<deleter_type>::value,
+ "constructed with null function pointer deleter"); }
explicit
unique_ptr(pointer __p)
@@ -288,10 +291,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ static_assert(!std::is_reference<deleter_type>::value,
"rvalue deleter bound to reference"); }
- /* TODO: use delegating constructor */
constexpr unique_ptr(nullptr_t)
: _M_t()
- { }
+ { static_assert(!std::is_pointer<deleter_type>::value,
+ "constructed with null function pointer deleter"); }
// Move constructors.
unique_ptr(unique_ptr&& __u)
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
index 143578e..e765874 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
@@ -30,9 +30,9 @@ using std::unique_ptr;
void
test01()
{
- unique_ptr<int, void(*)(int*)> p1; // { dg-error "here" "" { xfail *-*-* } }
+ unique_ptr<int, void(*)(int*)> p1; // { dg-error "here" }
- unique_ptr<int, void(*)(int*)> p2(nullptr); // { dg-error "here" "" { xfail *-*-* } }
+ unique_ptr<int, void(*)(int*)> p2(nullptr); // { dg-error "here" }
unique_ptr<int, void(*)(int*)> p3(new int); // { dg-error "here" }
}
@@ -40,9 +40,9 @@ test01()
void
test02()
{
- unique_ptr<int[], void(*)(int*)> p1; // { dg-error "here" "" { xfail *-*-* } }
+ unique_ptr<int[], void(*)(int*)> p1; // { dg-error "here" }
- unique_ptr<int[], void(*)(int*)> p2(nullptr); // { dg-error "here" "" { xfail *-*-* } }
+ unique_ptr<int[], void(*)(int*)> p2(nullptr); // { dg-error "here" }
unique_ptr<int[], void(*)(int*)> p3(new int[1]); // { dg-error "here" }
}
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
index 4e46c90..f0a1f6c 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
@@ -43,7 +43,7 @@ main()
// { dg-warning "note" "" { target *-*-* } 350 }
// { dg-warning "note" "" { target *-*-* } 1082 }
-// { dg-warning "note" "" { target *-*-* } 462 }
+// { dg-warning "note" "" { target *-*-* } 465 }
// { dg-warning "note" "" { target *-*-* } 580 }
// { dg-warning "note" "" { target *-*-* } 1027 }
// { dg-warning "note" "" { target *-*-* } 340 }