[Bug c++/68628] [concepts] ICE: segmentation fault in crash_signal, toplev.c:334
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Oct 15 08:44:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68628
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ice-on-invalid-code
Known to work| |10.0, 9.2.0
Known to fail| |8.3.0
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
No ICE with gcc-9-branch or current trunk:
68628.cc:12:61: error: expected parameter pack before '...'
12 | is_convertible<Ret, decltype(impl(forward <
Args(args)...))>::value;
| ^~~
68628.cc:12:41: error: invalid template-argument-list
12 | is_convertible<Ret, decltype(impl(forward <
Args(args)...))>::value;
| ^~~~~~~
68628.cc:12:41: note: function name as the left hand operand of '<' is
ill-formed in C++2a; wrap the function name in '()'
68628.cc:12:64: error: no matching function for call to
'internal::B<Ret>::impl(void (&)())'
12 | is_convertible<Ret, decltype(impl(forward <
Args(args)...))>::value;
| ^
68628.cc:7:35: note: candidate: 'template<class> static auto
internal::A::impl()'
7 | template <typename> static auto impl();
| ^~~~
68628.cc:7:35: note: template argument deduction/substitution failed:
68628.cc:12:64: note: candidate expects 0 arguments, 1 provided
12 | is_convertible<Ret, decltype(impl(forward <
Args(args)...))>::value;
| ^
68628.cc:12:64: error: no matching function for call to
'internal::B<Ret>::impl(void (&)())'
68628.cc:7:35: note: candidate: 'template<class> static auto
internal::A::impl()'
7 | template <typename> static auto impl();
| ^~~~
68628.cc:7:35: note: template argument deduction/substitution failed:
68628.cc:12:64: note: candidate expects 0 arguments, 1 provided
12 | is_convertible<Ret, decltype(impl(forward <
Args(args)...))>::value;
| ^
68628.cc:12:66: error: template argument 2 is invalid
12 | is_convertible<Ret, decltype(impl(forward <
Args(args)...))>::value;
| ^
68628.cc: In instantiation of 'bool Invokable<<lambda()>, int>':
68628.cc:21:17: required from here
68628.cc:20:64: error: no match for call to '(internal::B<<lambda()> >) (void
(&)())'
20 | template <typename Ret, typename> bool
Invokable{invoke_as<Ret>(forward)};
|
~~~~~~~~~~~~~~^~~~~~~~~
68628.cc:11:8: note: candidate: 'auto internal::B<Ret>::operator()(F, Args ...)
requires <erroneous-expression> [with F = void (*)(); Args = {}; Ret =
<lambda()>]'
11 | auto operator()(F, Args... args) requires
| ^~~~~~~~
68628.cc:11:8: note: constraints not satisfied
68628.cc:21:56: error: expected ',' at end of input
21 | static_assert ( Invokable < decltype ( functor ), int >
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
| ,
68628.cc:21:17: error: expected string-literal at end of input
21 | static_assert ( Invokable < decltype ( functor ), int >
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68628.cc:21:56: error: expected ')' at end of input
21 | static_assert ( Invokable < decltype ( functor ), int >
| ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
| )
68628.cc:21:56: error: expected ';' at end of input
21 | static_assert ( Invokable < decltype ( functor ), int >
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
| ;
More information about the Gcc-bugs
mailing list