Stephan T. Lavavej 68a694b800 [libcxx] [test] D27022: Fix MSVC warning C4389 "signed/unsigned mismatch", part 9/12.
Add static_cast<std::size_t> to more comparisons. (Performed manually, unlike part 8/12.)

Also, include <cstddef> when it wasn't already being included.

llvm-svn: 288746
2016-12-06 01:13:14 +00:00

43 lines
1.1 KiB
C++

//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <vector>
// vector<bool>
// std::find with vector<bool>::iterator
// http://llvm.org/bugs/show_bug.cgi?id=16816
#include <vector>
#include <algorithm>
#include <cassert>
#include <cstddef>
int main()
{
{
for (unsigned i = 1; i < 256; ++i)
{
std::vector<bool> b(i,true);
std::vector<bool>::iterator j = std::find(b.begin()+1, b.end(), false);
assert(static_cast<std::size_t>(j-b.begin()) == i);
assert(b.end() == j);
}
}
{
for (unsigned i = 1; i < 256; ++i)
{
std::vector<bool> b(i,false);
std::vector<bool>::iterator j = std::find(b.begin()+1, b.end(), true);
assert(static_cast<std::size_t>(j-b.begin()) == i);
assert(b.end() == j);
}
}
}