Skip to content

[clang] Crash on invalid template deduction guide #107887

Closed
@aeubanks

Description

@aeubanks

$ cat /tmp/a.ii

namespace a {
template <class> struct pair;
}
template <class _T2> pair() -> pair<_T2>;
$ clang++ "-cc1" "-triple" "x86_64-unknown-linux-gnu"  "-x" "c++" a.ii -fsyntax-only
a.ii:4:22: error: no template named 'pair'; did you mean 'a::pair'?
    4 | template <class _T2> pair() -> pair<_T2>;
      |                      ^~~~
      |                      a::pair
a.ii:2:25: note: 'a::pair' declared here
    2 | template <class> struct pair;
      |                         ^
a.ii:4:32: error: no template named 'pair'; did you mean 'a::pair'?
    4 | template <class _T2> pair() -> pair<_T2>;
      |                                ^~~~
      |                                a::pair
a.ii:2:25: note: 'a::pair' declared here
    2 | template <class> struct pair;
      |                         ^
a.ii:4:22: error: deduction guide must be declared in the same scope as template 'a::pair'
    4 | template <class _T2> pair() -> pair<_T2>;
      |                      ^
a.ii:2:25: note: template is declared here
    2 | template <class> struct pair;
      |                         ^

clang++: ../../clang/lib/Sema/SemaDeclCXX.cpp:11468: bool clang::Sema::CheckDeductionGuideDeclarator(Declarator &, QualType &, StorageClass &): Assertion `Qualifiers && "expected QualifiedTemplate"' failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    clang:frontendLanguage frontend issues, e.g. anything involving "Sema"confirmedVerified by a second partycrash-on-invalid

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions