https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118230
--- Comment #2 from shynur <one.last.kiss at outlook dot com> --- > The error is because the static_assert is evaluated while the class is > still being defined. Thank you! But why... > The workaround is to un-comment the "/* -> std::size_t */". I found it does work. If this turned out to be a bug instead, is it impossible to implement something like I wrote in: > Here is a real-world case: <https://stackoverflow.com/q/79302550> The only usage of struct `Hasher_Cmper` is to be the template argument of `S::set` so I don't want to define it anywhere else...