+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.
_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:
//@{
/**
-// 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;
}
{
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()