Author: dim Date: Fri Sep 2 16:02:11 2016 New Revision: 280543 URL: http://llvm.org/viewvc/llvm-project?rev=280543&view=rev Log: Avoid narrowing warnings in __bitset constructor
When <bitset> is compiled with warnings enabled, on a platform where size_t is 4 bytes, it results in errors similar to: bitset:265:16: error: non-constant-expression cannot be narrowed from type 'unsigned long long' to '__storage_type' (aka 'unsigned int') in initializer list [-Wc++11-narrowing] : __first_{__v, __v >> __bits_per_word} ^~~ bitset:676:52: note: in instantiation of member function 'std::__1::__bitset<2, 53>::__bitset' requested here bitset(unsigned long long __v) _NOEXCEPT : base(__v) {} ^ Fix these by casting the initializer list elements to __storage_type. Reviewers: mclow.lists, EricWF Differential Revision: https://reviews.llvm.org/D23960 Modified: libcxx/trunk/include/bitset Modified: libcxx/trunk/include/bitset URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/bitset?rev=280543&r1=280542&r2=280543&view=diff ============================================================================== --- libcxx/trunk/include/bitset (original) +++ libcxx/trunk/include/bitset Fri Sep 2 16:02:11 2016 @@ -259,7 +259,7 @@ __bitset<_N_words, _Size>::__bitset(unsi #if __SIZEOF_SIZE_T__ == 8 : __first_{__v} #elif __SIZEOF_SIZE_T__ == 4 - : __first_{__v, __v >> __bits_per_word} + : __first_{static_cast<__storage_type>(__v), static_cast<__storage_type>(__v >> __bits_per_word)} #else #error This constructor has not been ported to this platform #endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits