163aeadb4SLouis Dionne //===----------------------------------------------------------------------===//
263aeadb4SLouis Dionne //
363aeadb4SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
463aeadb4SLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
563aeadb4SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
663aeadb4SLouis Dionne //
763aeadb4SLouis Dionne //===----------------------------------------------------------------------===//
863aeadb4SLouis Dionne 
963aeadb4SLouis Dionne // UNSUPPORTED: no-exceptions
1063aeadb4SLouis Dionne 
1163aeadb4SLouis Dionne // test constexpr bool test(size_t pos) const;
1263aeadb4SLouis Dionne 
1363aeadb4SLouis Dionne // Make sure we throw std::out_of_range when calling test() on an OOB index.
1463aeadb4SLouis Dionne 
1563aeadb4SLouis Dionne #include <bitset>
1663aeadb4SLouis Dionne #include <cassert>
1763aeadb4SLouis Dionne #include <stdexcept>
1863aeadb4SLouis Dionne 
main(int,char **)1963aeadb4SLouis Dionne int main(int, char**) {
2063aeadb4SLouis Dionne     {
2163aeadb4SLouis Dionne         std::bitset<0> v;
22*9f8ca86aSCasey Carter         try { (void) v.test(0); assert(false); }
23*9f8ca86aSCasey Carter         catch (std::out_of_range const&) { }
2463aeadb4SLouis Dionne     }
2563aeadb4SLouis Dionne     {
2663aeadb4SLouis Dionne         std::bitset<1> v("0");
27*9f8ca86aSCasey Carter         try { (void) v.test(2); assert(false); }
28*9f8ca86aSCasey Carter         catch (std::out_of_range const&) { }
2963aeadb4SLouis Dionne     }
3063aeadb4SLouis Dionne     {
3163aeadb4SLouis Dionne         std::bitset<10> v("0000000000");
32*9f8ca86aSCasey Carter         try { (void) v.test(10); assert(false); }
33*9f8ca86aSCasey Carter         catch (std::out_of_range const&) { }
3463aeadb4SLouis Dionne     }
3563aeadb4SLouis Dionne 
3663aeadb4SLouis Dionne     return 0;
3763aeadb4SLouis Dionne }
38