bitset (bitset(const char*)): Implement DR 778 in debug-mode too.
authorPaolo Carlini <paolo.carlini@oracle.com>
Thu, 29 May 2008 11:42:08 +0000 (11:42 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Thu, 29 May 2008 11:42:08 +0000 (11:42 +0000)
2008-05-29  Paolo Carlini  <paolo.carlini@oracle.com>

* include/debug/bitset (bitset(const char*)): Implement DR 778
in debug-mode too.

* include/bits/cpp_type_traits.h (__is_integer): In C++0x mode
deal with char16_t and char32_t.

From-SVN: r136158

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/cpp_type_traits.h
libstdc++-v3/include/debug/bitset

index 1c023cfe8279815a0d4b870e8d5738fc3045daae..261d5e9473dcf5c51010ae63e9f90d0683eabce3 100644 (file)
@@ -1,3 +1,11 @@
+2008-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * include/debug/bitset (bitset(const char*)): Implement DR 778
+       in debug-mode too.
+
+       * include/bits/cpp_type_traits.h (__is_integer): In C++0x mode
+       deal with char16_t and char32_t.
+
 2008-05-26  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * include/c_global/cmath (pow(float, int), pow(double, int),
index 45b958f852d5831938ae17b4512a5e72ec40616c..b378abafcb46c402a617dc753e0d961e06a006bd 100644 (file)
@@ -180,6 +180,22 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     };
 # endif
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+  template<>
+    struct __is_integer<char16_t>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+
+  template<>
+    struct __is_integer<char32_t>
+    {
+      enum { __value = 1 };
+      typedef __true_type __type;
+    };
+#endif
+
   template<>
     struct __is_integer<short>
     {
index db4b3c075d005b2054f81b23b5003834f4a90399..75474c806b5156aa4759204b5d84c865f15c2f42 100644 (file)
@@ -134,6 +134,12 @@ namespace __debug
               __n = (std::basic_string<_CharT,_Traits,_Allocator>::npos))
        : _Base(__str, __pos, __n) { }
 
+      // _GLIBCXX_RESOLVE_LIB_DEFECTS
+      // 778. std::bitset does not have any constructor taking a string literal
+      explicit
+      bitset(const char* __s)
+      : _Base(__s) { }
+
       bitset(const _Base& __x) : _Base(__x), _Safe_base() { }
 
       // 23.3.5.2 bitset operations: