|
@@ -0,0 +1,32 @@
|
|
|
+//===----------------------------------------------------------------------===//
|
|
|
+//
|
|
|
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
|
+// See https://llvm.org/LICENSE.txt for license information.
|
|
|
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
+//
|
|
|
+//===----------------------------------------------------------------------===//
|
|
|
+
|
|
|
+// UNSUPPORTED: c++98, c++03, c++11
|
|
|
+// <experimental/type_traits>
|
|
|
+//
|
|
|
+// struct nonesuch;
|
|
|
+// nonesuch has no default constructor (C++17 §15.1)
|
|
|
+// or initializer-list constructor (C++17 §11.6.4),
|
|
|
+// and is not an aggregate (C++17 §11.6.1).
|
|
|
+
|
|
|
+
|
|
|
+#include <experimental/type_traits>
|
|
|
+#include <string>
|
|
|
+
|
|
|
+#include "test_macros.h"
|
|
|
+
|
|
|
+namespace ex = std::experimental;
|
|
|
+
|
|
|
+void doSomething (const ex::nonesuch &) {}
|
|
|
+
|
|
|
+int main(int, char**) {
|
|
|
+ ex::nonesuch *e0 = new ex::nonesuch; // expected-error {{no matching constructor for initialization of 'ex::nonesuch'}}
|
|
|
+ doSomething({}); // expected-error{{no matching function for call to 'doSomething'}}
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|