diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2010-11-07 15:15:28 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2010-11-07 15:15:28 +0000 |
commit | 17e3f4aa17624af245bae5408b6e5c1fdf90c9ec (patch) | |
tree | 8c7afc0305ad1af6678872992d187092916a020e /libstdc++-v3 | |
parent | c50bcc13cbab9a0451d74ba13f70437c5fcf69ad (diff) | |
download | gcc-17e3f4aa17624af245bae5408b6e5c1fdf90c9ec.zip gcc-17e3f4aa17624af245bae5408b6e5c1fdf90c9ec.tar.gz gcc-17e3f4aa17624af245bae5408b6e5c1fdf90c9ec.tar.bz2 |
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')
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/include/debug/bitset | 41 |
2 files changed, 40 insertions, 10 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 262a74a..fa9a9bb 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +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. + 2010-11-05 Benjamin Kosnik <bkoz@redhat.com> * doc/doxygen/user.cfg.in: Add typeindex. diff --git a/libstdc++-v3/include/debug/bitset b/libstdc++-v3/include/debug/bitset index 739dcfd..abbd841 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> |