From: Paolo Carlini Date: Mon, 24 Nov 2008 11:13:44 +0000 (+0000) Subject: re PR libstdc++/38244 (bitset initialization from 0 rejected.) X-Git-Tag: releases/gcc-4.4.0~1514 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9daf8216f4ec1464c0fea1cea7008a21f31abbaa;p=thirdparty%2Fgcc.git re PR libstdc++/38244 (bitset initialization from 0 rejected.) 2008-11-24 Paolo Carlini 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 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c2ebda516593..169a22b0016b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2008-11-24 Paolo Carlini + + 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 * 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 d60dd5df5d9f..906d942f364d 100644 --- a/libstdc++-v3/doc/xml/manual/intro.xml +++ b/libstdc++-v3/doc/xml/manual/intro.xml @@ -684,13 +684,6 @@ In C++0x mode, remove assign, add fill. - 778: - std::bitset does not have any constructor taking a string - literal - - Add it. - - 781: std::complex should add missing C99 functions diff --git a/libstdc++-v3/include/std/bitset b/libstdc++-v3/include/std/bitset index b18440d39f80..10d60055c31b 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 >(__s, - char_traits::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 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 24bb6213e607..5d7523258020 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 - // 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 -#include -// 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 3c8a576a96f3..6218e8a840d1 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()