[cfe-dev] [libc++] std::count with bool types
Howard Hinnant
hhinnant at apple.com
Thu May 10 07:11:25 PDT 2012
And it is still wrong. Sorry. Working on it...
Howard
On May 10, 2012, at 10:03 AM, Howard Hinnant wrote:
> Sorry about that! Somehow some friend statements were missing. Fix committed revision 156543.
>
> Thanks for the report!
>
> Howard
>
> On May 10, 2012, at 9:41 AM, Michael Sommerville wrote:
>
>> I am trying out a recent clang 3.1 release candidate on Linux with and
>> ToT libc++ and have run into the following compilation error. This
>> test builds successfully using libstdc++:
>>
>> $ clang -v
>> clang version 3.1 (branches/release_31 155817)
>> Target: x86_64-unknown-linux-gnu
>> Thread model: posix
>> .
>> $ cat test_count.cxx
>> #include <iostream>
>> #include <algorithm>
>> #include <vector>
>>
>> int main ()
>> {
>> // counting boolean elements in array
>> bool bool_array[] = { true,false,true,false,true,false,true,true};
>> int mycount = (int) std::count (bool_array, bool_array+8, true);
>> std::cout << "true appears " << mycount << " times.\n";
>>
>> // counting boolean elements in container
>> std::vector<bool> bool_vector( bool_array,bool_array+8 );
>> mycount = (int) std::count (bool_vector.begin(), bool_vector.end(), false);
>> std::cout << "false appears " << mycount << " times.\n";
>> }
>>
>> $ clang++ -stdlib=libc++ test_count.cxx -o testit
>> In file included from test_count.cxx:1:
>> In file included from /usr/include/c++/v1/iostream:40:
>> In file included from /usr/include/c++/v1/istream:156:
>> In file included from /usr/include/c++/v1/ostream:134:
>> In file included from /usr/include/c++/v1/bitset:120:
>> /usr/include/c++/v1/__bit_reference:236:27: error: '__storage_type' is
>> a private member of
>> 'std::__1::__bit_iterator<std::__1::vector<bool,
>> std::__1::allocator<bool> >, false, 0>'
>> typedef typename _It::__storage_type __storage_type;
>> ^
>> /usr/include/c++/v1/__bit_reference:299:16: note: in instantiation of
>> function template specialization
>> 'std::__1::__count_bool_true<std::__1::vector<bool,
>> std::__1::allocator<bool> > >' requested here
>> return __count_bool_true(__first, static_cast<typename
>> _Cp::size_type>(__last - __first));
>> ^
>> test_count.cxx:14:21: note: in instantiation of function template
>> specialization 'std::__1::count<std::__1::vector<bool,
>> std::__1::allocator<bool> >, bool>' requested here
>> mycount = (int) std::count (bool_vector.begin(), bool_vector.end(), false);
>> ^
>> /usr/include/c++/v1/__bit_reference:1071:84: note: declared private here
>> typedef typename _Cp::__storage_type
>> __storage_type;
>>
>> ^
>> /usr/include/c++/v1/__bit_reference:238:50: error: '__bits_per_word'
>> is a private member of
>> 'std::__1::__bit_iterator<std::__1::vector<bool,
>> std::__1::allocator<bool> >, false, 0>'
>> static const unsigned __bits_per_word = _It::__bits_per_word;
>> ^
>> /usr/include/c++/v1/__bit_reference:1074:27: note: declared private here
>> static const unsigned __bits_per_word = _Cp::__bits_per_word;
>>
>> etc etc
>>
>> -Michael
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
More information about the cfe-dev
mailing list