Issue 125290
Summary Possible bug in implementation of P3310
Labels new issue
Assignees
Reporter higher-performance
    I think #124137 may have introduced a bug. The following code no longer compiles: https://godbolt.org/z/G77fMj1nh

```
struct None {};
template<class T>
struct Node { using Tail = T; };

template <template<class> class Fixture, typename List>
struct Recursive {
  static void foo() {
 return Recursive<Fixture, typename List::Tail>::foo();
  }
};

template <template<class> class Fixture>
struct Recursive<Fixture, None> {
  static void foo() {}
};

template <class>
class Monadic {};

template <class...>
class Variadic {};

int main() {
  Recursive<Monadic, Node<None> >::foo();  // success
  Recursive<Variadic, Node<None> >::foo(); // error
}
```

It seems that the partial specialization `struct Recursive<Fixture, None>` is completely missed by the compiler now... but only when the `Fixture` is variadic. I assume this is not supposed to be the case?
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to