brintos

brintos / llvm-project-archived public Read only

0
0
Text · 811 B · d430d4c Raw
40 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s2// expected-no-diagnostics3 4namespace GH61159 {5template <typename T> struct X {6  struct I;7};8 9template <> struct X<int>::I {10  template <int ct> constexpr int f() { return ct; };11 12  int data = 3;13};14 15template <typename T> struct X<T>::I {16  template <T ct> constexpr T f() { return ct + 1; };17  T data = 7;18};19 20static_assert(X<int>::I{}.f<17>() == 17);21static_assert(X<int>::I{}.data == 3);22static_assert(X<short>::I{}.data == 7);23static_assert(X<short>::I{}.f<18>() == 19);24 25template <typename T> struct Y {26  struct I;27};28 29template <> struct Y<int> {30  struct I {31    template <int ct> constexpr int f() { return ct; };32    int data = 3;33  };34};35 36static_assert(Y<int>::I{}.f<17>() == 17);37static_assert(Y<int>::I{}.data == 3);38 39} // namespace GH6115940