136ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant//===----------------------------------------------------------------------===// 236ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// 336ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// The LLVM Compiler Infrastructure 436ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// 536ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 636ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 736ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// 836ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant//===----------------------------------------------------------------------===// 936ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant 1036ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// <vector> 1136ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// vector<bool> 1236ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant 1336ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// std::find with vector<bool>::iterator 1436ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant 15b7fd0be37076c8fe5a26a5850580426bcd4c0740Eric Fiselier// https://bugs.llvm.org/show_bug.cgi?id=16816 1636ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant 1736ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant#include <vector> 18e5e9bff62a4ae030ca42d312dc73f03d9cf61c4eMarshall Clow#include <algorithm> 1936ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant#include <cassert> 2021208822a84ac01e34df721b7b45e67561f75b98Stephan T. Lavavej#include <cstddef> 2136ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant 2236ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnantint main() 2336ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant{ 2436ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant { 2536ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant for (unsigned i = 1; i < 256; ++i) 2636ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant { 2736ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant std::vector<bool> b(i,true); 2836ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant std::vector<bool>::iterator j = std::find(b.begin()+1, b.end(), false); 2921208822a84ac01e34df721b7b45e67561f75b98Stephan T. Lavavej assert(static_cast<std::size_t>(j-b.begin()) == i); 306b5be703db4c5ffa7f9231f0f2440b02b469bd38Marshall Clow assert(b.end() == j); 3136ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant } 3236ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant } 3336ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant { 3436ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant for (unsigned i = 1; i < 256; ++i) 3536ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant { 3636ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant std::vector<bool> b(i,false); 3736ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant std::vector<bool>::iterator j = std::find(b.begin()+1, b.end(), true); 3821208822a84ac01e34df721b7b45e67561f75b98Stephan T. Lavavej assert(static_cast<std::size_t>(j-b.begin()) == i); 396b5be703db4c5ffa7f9231f0f2440b02b469bd38Marshall Clow assert(b.end() == j); 4036ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant } 4136ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant } 4236ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant} 43