summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog10
-rw-r--r--libstdc++-v3/doc/xml/manual/intro.xml7
-rw-r--r--libstdc++-v3/include/std/bitset11
-rw-r--r--libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc (renamed from libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc)45
-rw-r--r--libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc24
5 files changed, 36 insertions, 61 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c2ebda51659..169a22b0016 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,13 @@
+2008-11-24 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/38244
+ * include/std/bitset (bitset<>::bitset(const char*, char, char)):
+ Remove, do not implement DR 778.
+ * doc/xml/manual/intro.xml: Remove entry for DR 778.
+ * testsuite/23_containers/bitset/cons/2.cc: Remove.
+ * testsuite/23_containers/bitset/cons/dr396.cc: Tweak.
+ * testsuite/23_containers/bitset/cons/38244.cc: Add.
+
2008-11-21 Paolo Carlini <paolo.carlini@oracle.com>
* testsuite/22_locale/num_put/put/char/38210.cc: Tweak.
diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml
index d60dd5df5d9..906d942f364 100644
--- a/libstdc++-v3/doc/xml/manual/intro.xml
+++ b/libstdc++-v3/doc/xml/manual/intro.xml
@@ -684,13 +684,6 @@
<listitem><para>In C++0x mode, remove assign, add fill.
</para></listitem></varlistentry>
- <varlistentry><term><ulink url="../ext/lwg-defects.html#778">778</ulink>:
- <emphasis>std::bitset does not have any constructor taking a string
- literal</emphasis>
- </term>
- <listitem><para>Add it.
- </para></listitem></varlistentry>
-
<varlistentry><term><ulink url="../ext/lwg-defects.html#781">781</ulink>:
<emphasis>std::complex should add missing C99 functions</emphasis>
</term>
diff --git a/libstdc++-v3/include/std/bitset b/libstdc++-v3/include/std/bitset
index b18440d39f8..10d60055c31 100644
--- a/libstdc++-v3/include/std/bitset
+++ b/libstdc++-v3/include/std/bitset
@@ -802,17 +802,6 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
_M_copy_from_string(__s, __position, __n, __zero, __one);
}
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 778. std::bitset does not have any constructor taking a string literal
- explicit
- bitset(const char* __s, char __zero = '0', char __one = '1')
- : _Base()
- {
- _M_copy_from_ptr<char, char_traits<char> >(__s,
- char_traits<char>::length(__s), 0, size_t(-1),
- __zero, __one);
- }
-
// 23.3.5.2 bitset operations:
//@{
/**
diff --git a/libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc b/libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc
index 24bb6213e60..5d752325802 100644
--- a/libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc
+++ b/libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc
@@ -1,5 +1,3 @@
-// 2008-05-21 Paolo Carlini <paolo.carlini@oracle.com>
-
// Copyright (C) 2008 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -18,32 +16,29 @@
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
+// { dg-do compile }
+
#include <bitset>
-#include <testsuite_hooks.h>
-// DR 778. std::bitset does not have any constructor taking a string literal.
-void test01()
+class C0
{
- bool test __attribute__((unused)) = true;
-
- std::bitset<4> z1("1101");
- std::bitset<4> z1_ref(std::string("1101"));
- VERIFY( z1.to_string() == "1101" );
- VERIFY( z1 == z1_ref );
-
- std::bitset<8> z2("1011");
- std::bitset<8> z2_ref(std::string("1011"));
- VERIFY( z2.to_string() == "00001011" );
- VERIFY( z2 == z2_ref );
+ public:
+ C0() : b(0) { }
+ private:
+ std::bitset<1> b;
+};
- std::bitset<2> z3("1101");
- std::bitset<2> z3_ref(std::string("1101"));
- VERIFY( z3.to_string() == "11" );
- VERIFY( z3 == z3_ref );
-}
-
-int main()
+class C1
+{
+ public:
+ C1() : b(1) { }
+ private:
+ std::bitset<1> b;
+};
+
+// libstdc++/38244
+void func()
{
- test01();
- return 0;
+ C0 val0;
+ C1 val1;
}
diff --git a/libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc b/libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc
index 3c8a576a96f..6218e8a840d 100644
--- a/libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc
+++ b/libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc
@@ -26,35 +26,23 @@ void test01()
{
bool test __attribute__((unused)) = true;
- std::bitset<4> z1("bbab", 'a', 'b');
- std::bitset<4> z1_ref(std::string("bbab"), 0, std::string::npos, 'a', 'b');
+ std::bitset<4> z1(std::string("bbab"), 0, std::string::npos, 'a', 'b');
VERIFY( z1.to_string('a', 'b') == "bbab" );
- VERIFY( z1 == z1_ref );
- std::bitset<4> z2("11a1", 'a');
- std::bitset<4> z2_ref(std::string("11a1"), 0, std::string::npos, 'a');
+ std::bitset<4> z2(std::string("11a1"), 0, std::string::npos, 'a');
VERIFY( z2.to_string('a') == "11a1" );
- VERIFY( z2 == z2_ref );
- std::bitset<8> z3("babb", 'a', 'b');
- std::bitset<8> z3_ref(std::string("babb"), 0, std::string::npos, 'a', 'b');
+ std::bitset<8> z3(std::string("babb"), 0, std::string::npos, 'a', 'b');
VERIFY( z3.to_string('a', 'b') == "aaaababb" );
- VERIFY( z3 == z3_ref );
- std::bitset<8> z4("1a11", 'a');
- std::bitset<8> z4_ref(std::string("1a11"), 0, std::string::npos, 'a');
+ std::bitset<8> z4(std::string("1a11"), 0, std::string::npos, 'a');
VERIFY( z4.to_string('a') == "aaaa1a11" );
- VERIFY( z4 == z4_ref );
- std::bitset<2> z5("bbab", 'a', 'b');
- std::bitset<2> z5_ref(std::string("bbab"), 0, std::string::npos, 'a', 'b');
+ std::bitset<2> z5(std::string("bbab"), 0, std::string::npos, 'a', 'b');
VERIFY( z5.to_string('a', 'b') == "bb" );
- VERIFY( z5 == z5_ref );
- std::bitset<2> z6("11a1", 'a');
- std::bitset<2> z6_ref(std::string("11a1"), 0, std::string::npos, 'a');
+ std::bitset<2> z6(std::string("11a1"), 0, std::string::npos, 'a');
VERIFY( z6.to_string('a') == "11" );
- VERIFY( z6 == z6_ref );
}
int main()