Skip to content

CTAD: parameter pack assertion crash when synthesizing deduction guides for alias  #90209

Closed
@hokein

Description

@hokein

Example:

struct Key1 {}; 

template <int i>
struct Item {};

template <class... Ts>
struct List {};

template <class Key, class L>
struct TemplatedClass {
  template <class... Items>
  TemplatedClass(Key, Items...);
};

template <class Key, class...Items>
  requires(sizeof(Key) > 0 && (sizeof(Items) && ...))
TemplatedClass(Key, Items...) -> TemplatedClass<Key, List<Items...>>;

template <class T>
struct HasTemplateParam {
  template <class Key, class... Items>
  using Alias = TemplatedClass<Key, List<Items...>>;
};

struct Mod1 : HasTemplateParam<Mod1> {
  using Foo1 = decltype(Alias{Key1()});
};

https://godbolt.org/z/fssjafzYe.

Metadata

Metadata

Assignees

Labels

c++20clang:frontendLanguage frontend issues, e.g. anything involving "Sema"confirmedVerified by a second partycrashPrefer [crash-on-valid] or [crash-on-invalid]

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions