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