]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libstdc++/38244 (bitset initialization from 0 rejected.)
authorPaolo Carlini <paolo.carlini@oracle.com>
Mon, 24 Nov 2008 11:13:44 +0000 (11:13 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 24 Nov 2008 11:13:44 +0000 (11:13 +0000)
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.

From-SVN: r142152

libstdc++-v3/ChangeLog
libstdc++-v3/doc/xml/manual/intro.xml
libstdc++-v3/include/std/bitset
libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc [moved from libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc with 55% similarity]
libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc

index c2ebda5165939964b6bbcda6e9a6f09f8375bedb..169a22b0016b64442ee703bca1f0819e2fdba6de 100644 (file)
@@ -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.
index d60dd5df5d9fc797652c37afeaa240b5a81a363c..906d942f364d73108e253b54fd29c55744554733 100644 (file)
     <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>
index b18440d39f80a0a0bb5d7ed9b1065868c753a2c6..10d60055c31b3b50f44451a9131d5706f2f6ad65 100644 (file)
@@ -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:
       //@{
       /**
similarity index 55%
rename from libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc
rename to libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc
index 24bb6213e607095f11434006c9ac8c8bd6713877..5d7523258020fb0c7272f73884da30837e926623 100644 (file)
@@ -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
 // 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;
 }
index 3c8a576a96f3de2f57cdb80b39c8db22b95808f7..6218e8a840d12c222434c0548dbe6b04664dc45a 100644 (file)
@@ -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()