The bitset(unsigned long long) constructor was broken by the constexpr additions only on 32 bit platforms. Fixed. This addresses http://llvm.org/bugs/show_bug.cgi?id=15444.

llvm-svn: 176559
This commit is contained in:
Howard Hinnant 2013-03-06 17:30:26 +00:00
parent 7de484640e
commit 53b9ee061f
1 changed files with 7 additions and 0 deletions

View File

@ -249,7 +249,13 @@ inline _LIBCPP_INLINE_VISIBILITY
_LIBCPP_CONSTEXPR
__bitset<_N_words, _Size>::__bitset(unsigned long long __v) _NOEXCEPT
#ifndef _LIBCPP_HAS_NO_CONSTEXPR
#if __SIZE_WIDTH__ == 64
: __first_{__v}
#elif __SIZE_WIDTH__ == 32
: __first_{__v, __v >> __bits_per_word}
#elif
#error This constructor has not been ported to this platform
#endif
#endif
{
#ifdef _LIBCPP_HAS_NO_CONSTEXPR
@ -633,6 +639,7 @@ template <size_t _Size>
class _LIBCPP_VISIBLE bitset
: private __bitset<_Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1, _Size>
{
public:
static const unsigned __n_words = _Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1;
typedef __bitset<__n_words, _Size> base;