diff options
Diffstat (limited to 'libcxx/test/std/utilities')
-rw-r--r-- | libcxx/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libcxx/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp b/libcxx/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp index 453db91f29d..b08449ce8eb 100644 --- a/libcxx/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp +++ b/libcxx/test/std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp @@ -74,6 +74,18 @@ void test_string_ctor() } } +struct Nonsense { + virtual ~Nonsense() {} +}; + +void test_for_non_eager_instantiation() { + // Ensure we don't accidentally instantiate `std::basic_string<Nonsense>` + // since it may not be well formed and can cause an error in the + // non-immediate context. + static_assert(!std::is_constructible<std::bitset<3>, Nonsense*>::value, ""); + static_assert(!std::is_constructible<std::bitset<3>, Nonsense*, size_t, Nonsense&, Nonsense&>::value, ""); +} + int main(int, char**) { test_string_ctor<0>(); @@ -85,6 +97,7 @@ int main(int, char**) test_string_ctor<64>(); test_string_ctor<65>(); test_string_ctor<1000>(); + test_for_non_eager_instantiation(); return 0; } |