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

--- Comment #2 from franwade33 at googlemail dot com ---
It throws a different compiler error if you give the template parameter (Move
`bool is_noexcept` to the start of the template list and call
`is_noexcept_function<true>(foo<S>)`). To my knowledge, this is not a gcc
extension (And it works fine in MSVC++ and with clang++).

    <source>: In substitution of 'template<bool is_noexcept, class ... Args>
constexpr bool is_noexcept_function(void (*)(Args ...) noexcept (is_noexcept))
[with bool is_noexcept = true; Args = <missing>]':
    <source>:24:48:   required from here
    <source>:24:48: internal compiler error: in nothrow_spec_p, at
cp/except.c:LINE
       24 | static_assert(is_noexcept_function<true>(foo<S>));
          |                                                ^

https://godbolt.org/z/cjhCQp

Where the line number is 1238 in gcc 10.0.0, 1241 in gcc 9.1.0, and 1148 in gcc
8.3.0 (It is an ICE in all 3 versions)

Reply via email to