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 1536ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant// http://llvm.org/bugs/show_bug.cgi?id=16816 1636ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant 1736ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant#include <vector> 1836ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant#include <cassert> 1936ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant 2036ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnantint main() 2136ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant{ 2236ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant { 2336ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant for (unsigned i = 1; i < 256; ++i) 2436ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant { 2536ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant std::vector<bool> b(i,true); 2636ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant std::vector<bool>::iterator j = std::find(b.begin()+1, b.end(), false); 2736ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant assert(j-b.begin() == i); 2890dc8dd841b975fccfa4a278b9b44065d3644839Dan Albert assert(b.end() == j); 2936ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant } 3036ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant } 3136ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant { 3236ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant for (unsigned i = 1; i < 256; ++i) 3336ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant { 3436ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant std::vector<bool> b(i,false); 3536ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant std::vector<bool>::iterator j = std::find(b.begin()+1, b.end(), true); 3636ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant assert(j-b.begin() == i); 3790dc8dd841b975fccfa4a278b9b44065d3644839Dan Albert assert(b.end() == j); 3836ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant } 3936ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant } 4036ba399a3342eec3d5f2167dc71c073c6aef5a24Howard Hinnant} 41