<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/113659>113659</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang] Crash inclass template arguments deduction for aggregates
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Timothy-Liuxf
      </td>
    </tr>
</table>

<pre>
    The following code:

```cpp
#include <tuple>
#include <string>
#include <any>

template<class... Args>
struct B : std::tuple<Args...>, Args... {};

B b{std::tuple<std::any, std::string>{}};

```

crashes when compiled with Clang 19.1.0 (`clang++ -std=c++20`):

```bash
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-19.1.0/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-14.2.0 -fcolor-diagnostics -fno-crash-diagnostics -std=c++20 <source>
1.      <source>:8:41: current parser token ';'
 #0 0x00000000036fdb08 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x36fdb08)
 #1 0x00000000036fbc74 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x36fbc74)
 #2 0x0000000003647be8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007a0a79c42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000000006a8bbbc checkDeducedTemplateArguments(clang::ASTContext&, clang::DeducedTemplateArgument const&, clang::DeducedTemplateArgument const&, bool) (.part.0) SemaTemplateDeduction.cpp:0:0
 #5 0x0000000006a8d57c (anonymous namespace)::PackDeductionScope::finish() SemaTemplateDeduction.cpp:0:0
 #6 0x0000000006af1e55 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, clang::QualType, clang::Expr::Classification, llvm::function_ref<bool (llvm::ArrayRef<clang::QualType>)>) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x6af1e55)
 #7 0x00000000068eef0d clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x68eef0d)
 #8 0x000000000670cb8a clang::Sema::DeduceTemplateSpecializationFromInitializer(clang::TypeSourceInfo*, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>)::'lambda0'(bool)::operator()(bool) const::'lambda'(clang::InitListExpr*)::operator()(clang::InitListExpr*) const SemaInit.cpp:0:0
 #9 0x000000000670d168 clang::Sema::DeduceTemplateSpecializationFromInitializer(clang::TypeSourceInfo*, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>)::'lambda0'(bool)::operator()(bool) const SemaInit.cpp:0:0
#10 0x000000000670d82a clang::Sema::DeduceTemplateSpecializationFromInitializer(clang::TypeSourceInfo*, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::Expr*>) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x670d82a)
#11 0x0000000006294f18 clang::Sema::deduceVarTypeFromInitializer(clang::VarDecl*, clang::DeclarationName, clang::QualType, clang::TypeSourceInfo*, clang::SourceRange, bool, clang::Expr*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x6294f18)
#12 0x00000000062afa2b clang::Sema::DeduceVariableDeclarationType(clang::VarDecl*, bool, clang::Expr*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x62afa2b)
#13 0x00000000062d9fe4 clang::Sema::AddInitializerToDecl(clang::Decl*, clang::Expr*, bool) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x62d9fe4)
#14 0x0000000005f58d4c clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f58d4c)
#15 0x0000000005f6cbe4 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f6cbe4)
#16 0x0000000005f1e817 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f1e817)
#17 0x0000000005f1f703 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f1f703)
#18 0x0000000005f27cd2 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f27cd2)
#19 0x0000000005f29ac8 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f29ac8)
#20 0x0000000005f1877a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x5f1877a)
#21 0x0000000003fce825 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3fce825)
#22 0x0000000004274201 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x4274201)
#23 0x00000000041f699b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x41f699b)
#24 0x000000000435a843 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x435a843)
#25 0x0000000000c874dc cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0xc874dc)
#26 0x0000000000c8146d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#27 0x0000000004017309 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#28 0x0000000003648013 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3648013)
#29 0x0000000004017529 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#30 0x0000000003fdd947 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3fdd947)
#31 0x0000000003fde2fd clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3fde2fd)
#32 0x0000000003fe7d4c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0x3fe7d4c)
#33 0x0000000000c847f1 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0xc847f1)
#34 0x0000000000b5c2d4 main (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0xb5c2d4)
#35 0x00007a0a79c29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#36 0x00007a0a79c29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#37 0x0000000000c80f0e _start (/opt/compiler-explorer/clang-19.1.0/bin/clang+++0xc80f0e)
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Compiler returned: 139
```

which can be compiled with GCC 14.2.

View in Compiler Explorer:

<https://gcc.godbolt.org/z/1jca4WMEr>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWtty2zjSfhr6BiUVCVIieeELWrbmz_yZjTdyZS9VIABKmJAAFwBteZ5-C-BBBHVIMqvJzezURJZw6P766wbQOCCl2I5Teu8tHrzF4x1q9F7I-xdWCb1_n31kzaG4ywV5v3_ZU1CIshRvjO8AFoR6Yeb5j57ffy799n9c110JDBnHZUMo8MKVbuqSeuHTuTqlJeO7C5WIvx9r7KemVV0iTb1whUuk1Hw-B5ncqaGZ0rLBGjwAL8yA0sRADbMOwco0nc_npjVcge4X8OIHL370woexpgeQe_HDiYShwGCDq6OKoyGttBOBA0vjQiyR2lMF3vaUAyyqmpWUgDem92BVIr4DQToP5j7wYGL4NUUefPDgA5hZzY-4_QmtYJhe8kyO1L4tev74lG2egGryimmAQN7sgKS1kBpoAfZa18oIgWsPrndM75t8jkXlwXVZvvZ_ZrUUv1OsPbhmSjVUeXANECeg953eU2BNAznCX7VEmBqyaklrKTBVihKgRCPbYtMTKSUwQ5oSIBsOFJas1vMW8kYj_BWQpqoH8_y556fPUuwkqgCSu6aiXBvgwINrURtkHZtyRg91KSSVpswQOGs59eA6Z7wv7FndkTcki1kEZjswE0Yaqmsjs9F1o-cKzCrDAJjNDslyhlQ1U-9co4MXPjKuaQlmBRezVypzoaipB7MNmM12GM-0ECXeI8a98PEqStM4iOZw7oNZgUUp5IwwtONCaYZVq8Gy6xZPAsKOrpbjfnAEhjWnOMwSL8yiwDCHGykp16BGUlEJtPhKOfBgbOIYxq0E4MHQB_7B7_8LlwXJ_QTY6GgHwrtqvzxLxrX13UsbAMmxkURvW6G0pKjy4NIEAePag6kN9P_Ggx588A8dKDMeBtTBBHWO4-gc6lVJEW_qT3zDdhyVHkwabmdKAkphtNwOo4HgYIQuxijOaQJWxtOfKRavVL63oP4PcVIaVUnHmtNmJbimBz03s3GY-fbfoCLsVMTIR3GKI7iAfmdQyXIPrg_JcruMZiXjzWG2401bgedKzJcWuO3iwI7GsJcoyfMcA7yn-OsjJQ2m5KWbtbNhoMKk5cNSnm1eOsxdLIzqLkgAWHD1J5vnQpSdG-c1kto4KQUbWqG-m5WimeDnOVxM7CWLGBtpiAv-XolGAY4qqmob9Gk3GFDHhhG7waKmbXnBOFN764AfwrB0MRQBXSzGRBhRY0q-4YJ1w62yo3ZcejCbsDsV8pEp_YEXomt5HE2ZlOj9My3aZbrv_nSopWnarr5ntA9ap25VgzUn9LT6R449_h0J-GeDypf3mk6KLaJu2JuEqGAYGaGuNUUHbyutRUY8cGaz8-YOOo29aft5m7mj87czCGMnIBJKC5-cD4iMDOPj0yuVpUBkhThhxORVfyIqTGmGzar-jJj8SSFzgnxD9YUwOBMOK1SWR99njx9Nwf8zTr6l5RlJVH2ShMrJTHIDp7Y-c5yaOE6NfZwn6HtG-aammKGS_WGjeS1F9YEzbUvssjF20HtNNzYfGLllVH_sSJ64Zvr90tQ7NLQ6DZlOy6Onf2s0ykv6bYd3U6cH4xJVOUG-SUNg0rHeVoqaSqSFbGfQY22n2xXQ9p9gNhHZa70o9WqfVpedvU3l-Qk7nbiSBMvkf678fldeoddkd_6U3gT-nUbKjaaglrdhCjLEOnnzEqZREVyIW2KJ_YKkIeoqk1-QvLyUIGlp-Qeqpqv1hUX8W35p6z4jvqMXloPRUL4Njy1NDo_Q5REVCObXAvQLksw4f0RJa_tlIn-KZRa4Y1noWkbSgkYXM49RTLyIFnsyCYBTDw5W3HrJbcE61jibmUWxSEiEx1ie7e549H3koKzQVPa_hcw4ybSWLG80Vad2om62m04PJxqGdM3E96VJZdxrLaQNd0P2Lb3f0eHwtXD5WuLc9f5Zvn6RoqldRkwd4ztTa-bkc1u7nrJhs3hKgEP4jxF72r6dOD6Kfk8wDcufQ7ll1KF86VIe0CSIv0n5J3ncZRUfuKayPd34cQa_2eKqG9udgl12C2Z4uBlRlgeHqHhCVBH74feOZYcvZmYtEwJ_OV3TGPsL6TJsOHQlLl0wxgRepevp0IbRiLafQ9HNSLA2OiSkExJShJOrJLyI-iN9peXpYvapRv9u6LOWbuI2TIA2pXs6M-8MC-ZvgjQl_VDVQuqNtvvz5S2tN8aNrYf-ZMQkcYxOrM82L66hFvC5zfftgtUAcZC657kFpgl0DsBWgtBfKM_sEO7TCIobTbui9sjtNme5rXoHn5PvRTCOoB84Z17SrGKcnAF4S2idZgeak7BFQbFM09ylrlX2gSuNOKbn2btsyw1jtEPnwHcytChcoCQK3WzRAj1a8Tqs4Mk1K284sXSoHNhOouTjJI4IBhgH2woZGReOE_dI9hnfcArmlMEVeBWM3BJ9i80Bv5yAD6IlAT3Rq-DFjvaRCZsKleUXirWQH6q6PGvJZLNrZHSZ3SjHTQGR7JXKs7t-6CzwkR_EoZ9aOi6f3tra7ojBXoB5YYZRWeYIf90W3J2qW91dvKyClagqxMl0sJ713HAxLGqjHRkORvzY2-JuAWjdOnTYbvHhEATtjxwphrf95bJl0WlsCrZaIqZVXz0Rh8rSxL-Qo3rTZLSdyq4fmPWn10l_AfaryM_7I5lcYCV-EI5cce6aqq353PANKmj57tB53XW3u4mzOJ14T6eBtTAM_Y0DY3JbdikCJpfDBSFpFF8kznoMnax_PZvOdD3paBpc2gpfaZpN7gAH226RBFhjx2E0uXQuCIUF-VE2fhW5ukzFryL_yJS-cIB4Og0P3q8RM463F8jfz14XIn8hh4Yih0P3Uryg8eRAZoz3cfTdSQPOrP-XuP-JHN4s_bSkOKyFkwU7iosu_ezzjR61nTiyk_u4S8vxjTIMg8cB7GR1fr7AkETAQL2Nxlago3HhPoWAKUl_8CmE7eLIXE5l0sgH263ptlUaSb0dmfTdWmjkaoknzvULn4JW_q38Y0QOOsfVYQaolGbRyNp4AkWX_QPcRXqBjq_Y6IFp-2YQBKENnkZRMHsFWgBFKWCj5LxT1uflQFLdSE7NWDOdr7yie9szvAcYcZDTySu6X1YrYN9Sjdt_YfQNMA4GVU89P5Pnc-Fq8iAO4_lOkFyUei7kzoPrPzy4Dn7HKPrXb09mBb0j9yFJwxTd0fsghmkSpmEC7_b3eZgsYeRHBcxThBDNC0ppiGAR0RAjGN-xe-jDKPDhwl8ulhDOYz-i_jJGNCEpgVHhRT6tECvnZpAa9Xf28d19EITLRXpXopyWyj7nhLDzGPQWj3fy3r7Zy5ud8iK_ZEqrowjNdGnfgLY9Fo_tWyL7kg8pBfoHl8dHdoD0Ty9AISRAu52kO6Spumtkef_nHxB2Zrzew_8EAAD__2Rt2UQ">