aboutsummaryrefslogtreecommitdiff
path: root/test/CXX/temp/temp.spec/temp.inst/p7.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CXX/temp/temp.spec/temp.inst/p7.cpp')
-rw-r--r--test/CXX/temp/temp.spec/temp.inst/p7.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/CXX/temp/temp.spec/temp.inst/p7.cpp b/test/CXX/temp/temp.spec/temp.inst/p7.cpp
new file mode 100644
index 000000000000..5145dafdc5b4
--- /dev/null
+++ b/test/CXX/temp/temp.spec/temp.inst/p7.cpp
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 -verify -std=c++17 %s
+
+template<typename T> constexpr int f() { return T::value; } // expected-error {{'::'}}
+template<bool B, typename T> void g(decltype(B ? f<T>() : 0));
+template<bool B, typename T> void g(...);
+template<bool B, typename T> void h(decltype(int{B ? f<T>() : 0})); // expected-note {{instantiation of}}
+template<bool B, typename T> void h(...);
+void x() {
+ g<false, int>(0); // ok
+ g<true, int>(0); // ok
+ h<false, int>(0); // expected-note {{while substituting}}
+}