diff options
author | Eric Fiselier <eric@efcs.ca> | 2019-07-01 19:59:34 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2019-07-01 19:59:34 +0000 |
commit | d1523f7a8c2247adfee559b127206a40ce4b2591 (patch) | |
tree | 5627911f3dd58b414d79aec91e7a617e49c052d9 /libcxx/test/std/utilities | |
parent | c9f14f29f5c5338ec00c5946c76bf6ea2d8fb7d8 (diff) | |
download | bcm5719-llvm-d1523f7a8c2247adfee559b127206a40ce4b2591.tar.gz bcm5719-llvm-d1523f7a8c2247adfee559b127206a40ce4b2591.zip |
Ensure bitset's string constructor doesn't poison the overload set.
llvm-svn: 364842
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; } |