Skip to content

Commit 3c5b72d

Browse files
Add a crash-on-valid unit test
1 parent 588762c commit 3c5b72d

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

clang/test/SemaCXX/pr98102.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s
2+
// expected-no-diagnostics
3+
4+
template <bool v>
5+
struct BC {
6+
static constexpr bool value = v;
7+
};
8+
9+
template <typename T, typename Arg>
10+
struct Constructible : BC<__is_constructible(T, Arg)> {};
11+
12+
template <typename T>
13+
using Requires = T::value;
14+
15+
template <typename T>
16+
struct optional {
17+
template <typename U, Requires<Constructible<T, U>> = true>
18+
optional(U) {}
19+
};
20+
21+
struct MO {};
22+
struct S : MO {};
23+
struct TB {
24+
TB(optional<S>) {}
25+
};
26+
27+
class TD : TB, MO {
28+
using TB::TB;
29+
};
30+
31+
void foo() {
32+
static_assert(Constructible<TD, TD>::value);
33+
}

0 commit comments

Comments
 (0)