summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/debug
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2010-11-07 15:15:28 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2010-11-07 15:15:28 +0000
commit17e3f4aa17624af245bae5408b6e5c1fdf90c9ec (patch)
tree8c7afc0305ad1af6678872992d187092916a020e /libstdc++-v3/include/debug
parentc50bcc13cbab9a0451d74ba13f70437c5fcf69ad (diff)
downloadgcc-17e3f4aa17624af245bae5408b6e5c1fdf90c9ec.tar.gz
bitset: Do not derive from _Safe_sequence_base in C++0x mode...
2010-11-07 Paolo Carlini <paolo.carlini@oracle.com> * include/debug/bitset: Do not derive from _Safe_sequence_base in C++0x mode, otherwise std::bitset isn't a literal type anymore; adjust everywhere. * include/debug/bitset (bitset<>::bitset(), bitset<>:: bitset(unsigned long long)): Add missing constexpr specifier. From-SVN: r166416
Diffstat (limited to 'libstdc++-v3/include/debug')
-rw-r--r--libstdc++-v3/include/debug/bitset41
1 files changed, 31 insertions, 10 deletions
diff --git a/libstdc++-v3/include/debug/bitset b/libstdc++-v3/include/debug/bitset
index 739dcfd38f1..abbd8413a2b 100644
--- a/libstdc++-v3/include/debug/bitset
+++ b/libstdc++-v3/include/debug/bitset
@@ -41,37 +41,50 @@ namespace __debug
/// Class std::bitset with additional safety/checking/debug instrumentation.
template<size_t _Nb>
class bitset
- : public _GLIBCXX_STD_D::bitset<_Nb>,
- public __gnu_debug::_Safe_sequence_base
+ : public _GLIBCXX_STD_D::bitset<_Nb>
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+ , public __gnu_debug::_Safe_sequence_base
+#endif
{
typedef _GLIBCXX_STD_D::bitset<_Nb> _Base;
- typedef __gnu_debug::_Safe_sequence_base _Safe_base;
public:
// bit reference:
class reference
- : private _Base::reference, public __gnu_debug::_Safe_iterator_base
+ : private _Base::reference
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+ , public __gnu_debug::_Safe_iterator_base
+#endif
{
typedef typename _Base::reference _Base_ref;
friend class bitset;
reference();
- reference(const _Base_ref& __base, bitset* __seq)
- : _Base_ref(__base), _Safe_iterator_base(__seq, false)
+ reference(const _Base_ref& __base,
+ bitset* __seq __attribute__((__unused__)))
+ : _Base_ref(__base)
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+ , _Safe_iterator_base(__seq, false)
+#endif
{ }
public:
reference(const reference& __x)
- : _Base_ref(__x), _Safe_iterator_base(__x, false)
+ : _Base_ref(__x)
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+ , _Safe_iterator_base(__x, false)
+#endif
{ }
reference&
operator=(bool __x)
{
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
_GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
_M_message(__gnu_debug::__msg_bad_bitset_write)
._M_iterator(*this));
+#endif
*static_cast<_Base_ref*>(this) = __x;
return *this;
}
@@ -79,12 +92,14 @@ namespace __debug
reference&
operator=(const reference& __x)
{
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
_GLIBCXX_DEBUG_VERIFY(! __x._M_singular(),
_M_message(__gnu_debug::__msg_bad_bitset_read)
._M_iterator(__x));
_GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
_M_message(__gnu_debug::__msg_bad_bitset_write)
._M_iterator(*this));
+#endif
*static_cast<_Base_ref*>(this) = __x;
return *this;
}
@@ -92,36 +107,42 @@ namespace __debug
bool
operator~() const
{
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
_GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
_M_message(__gnu_debug::__msg_bad_bitset_read)
._M_iterator(*this));
+#endif
return ~(*static_cast<const _Base_ref*>(this));
}
operator bool() const
{
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
_GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
_M_message(__gnu_debug::__msg_bad_bitset_read)
._M_iterator(*this));
+#endif
return *static_cast<const _Base_ref*>(this);
}
reference&
flip()
{
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
_GLIBCXX_DEBUG_VERIFY(! this->_M_singular(),
_M_message(__gnu_debug::__msg_bad_bitset_flip)
._M_iterator(*this));
+#endif
_Base_ref::flip();
return *this;
}
};
// 23.3.5.1 constructors:
- bitset() : _Base() { }
+ _GLIBCXX_CONSTEXPR bitset() : _Base() { }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
- bitset(unsigned long long __val)
+ constexpr bitset(unsigned long long __val)
#else
bitset(unsigned long __val)
#endif
@@ -147,7 +168,7 @@ namespace __debug
_CharT __zero, _CharT __one = _CharT('1'))
: _Base(__str, __pos, __n, __zero, __one) { }
- bitset(const _Base& __x) : _Base(__x), _Safe_base() { }
+ bitset(const _Base& __x) : _Base(__x) { }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
template<typename _CharT>