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

            Bug ID: 120190
           Summary: Definition of the primary template of std::format_kind
                    seems IFNDR
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: de34 at live dot cn
  Target Milestone: ---

Currently, libstd++ defines the primary template of std::format_kind as:

```
  template<typename _Rg>
    constexpr auto format_kind =
    __primary_template_not_defined(
      format_kind<_Rg> // you can specialize this for non-const input ranges
    );
```

It seems that such definition is always invalid, and causes the program
ill-formed, no diagnostic required per [temp.res.general]/6
(https://eel.is/c++draft/temp.res.general#6).

Recently, Clang starts to reject such definition before instantiation
(https://godbolt.org/z/aYhd851hE).

IIUC we should use either static_assert or some merging trick to be
pedantically correct.

Reply via email to