https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126796

            Bug ID: 126796
           Summary: [c++26] "cannot index an empty pack" on uninstantiated
                    function
           Product: gcc
           Version: 16.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marcel at laverdet dot com
  Target Milestone: ---

a.cc:
template <class...Types>
struct foo {
  template <int Index>
  auto get() const -> Types...[Index] { return {}; }
};

auto main() -> int {
  auto ff = foo<>{};
  return 0;
}

---

$ g++ --version
g++ (GCC) 16.2.0
Copyright (C) 2026 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++ -std=c++2c a.cc 
a.cc: In instantiation of ‘struct foo<>’:
a.cc:8:18:   required from here
    8 |         auto ff = foo<>{};
      |                         ^
a.cc:4:14: error: cannot index an empty pack
    4 |         auto get() const -> Types...[Index] { return {}; }
      |              ^~~

$ clang++ -std=c++2c a.cc 
// it's fine

---

Replacing with `auto get() const -> auto { return Types...[Index]{}; }` works.

Reply via email to