summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2019-07-01 19:59:34 +0000
committerEric Fiselier <eric@efcs.ca>2019-07-01 19:59:34 +0000
commitd1523f7a8c2247adfee559b127206a40ce4b2591 (patch)
tree5627911f3dd58b414d79aec91e7a617e49c052d9 /libcxx/test/std/utilities
parentc9f14f29f5c5338ec00c5946c76bf6ea2d8fb7d8 (diff)
downloadbcm5719-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.cpp13
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;
}
OpenPOWER on IntegriCloud