public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "mpolacek at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/100362] [11/12 Regression] ICE with Boost.Asio async_initiate Date: Fri, 30 Apr 2021 22:37:30 +0000 [thread overview] Message-ID: <bug-100362-4-Sei5tzXeMq@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-100362-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100362 Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |11.2 Summary|ICE with Boost.Asio |[11/12 Regression] ICE with |async_initiate |Boost.Asio async_initiate CC| |ppalka at gcc dot gnu.org --- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- template <typename _Tp> struct remove_cv { using type = _Tp; }; class async_result { public: template <typename Initiation, typename RawCompletionToken> static void initiate(Initiation initiation, RawCompletionToken token) { initiation(token); } }; template <typename CompletionToken, typename, typename Initiation> void async_initiate(Initiation initiation, CompletionToken token) { async_result::initiate(initiation, token); } template <typename> class allocator {}; template <typename, typename _Alloc> void allocate_shared(_Alloc) { } template <typename _Tp> void make_shared() { allocate_shared<_Tp>(allocator<typename remove_cv<_Tp>::type>()); } template <typename> class Foo {}; template <typename> class Qux { public: template <typename CompletionToken> decltype(auto) AsyncOp(CompletionToken &&); int a_; }; template <typename T> template <typename CompletionToken> decltype(auto) Qux<T>::AsyncOp(CompletionToken &&token) { using SignatureType = void; async_initiate<CompletionToken, SignatureType>( [this](auto) { struct Grault : Foo<decltype(a_)> {}; auto ptr{make_shared<Grault>}; }, token); } void corge() { Qux<int> qux; qux.AsyncOp([] {}); } $ xg++-10 -c 100362.C $ xg++-11 -c 100362.C 100362.C: In instantiation of ‘struct Qux<int>::AsyncOp<corge()::<lambda()> >(corge()::<lambda()>&&)::<lambda(auto:1)>::Grault’: 100362.C:16:23: required from ‘void make_shared() [with _Tp = Qux<int>::AsyncOp<corge()::<lambda()> >(corge()::<lambda()>&&)::<lambda(auto:1)>::Grault]’ 100362.C:32:14: required from ‘Qux<int>::AsyncOp<corge()::<lambda()> >(corge()::<lambda()>&&)::<lambda(auto:1)> [with auto:1 = corge()::<lambda()>]’ 100362.C:6:15: required from ‘static void async_result::initiate(Initiation, RawCompletionToken) [with Initiation = Qux<int>::AsyncOp<corge()::<lambda()> >(corge()::<lambda()>&&)::<lambda(auto:1)>; RawCompletionToken = corge()::<lambda()>]’ 100362.C:11:25: required from ‘void async_initiate(Initiation, CompletionToken) [with CompletionToken = corge()::<lambda()>; <template-parameter-1-2> = void; Initiation = Qux<int>::AsyncOp<corge()::<lambda()> >(corge()::<lambda()>&&)::<lambda(auto:1)>]’ 100362.C:29:49: required from ‘decltype(auto) Qux< <template-parameter-1-1> >::AsyncOp(CompletionToken&&) [with CompletionToken = corge()::<lambda()>; <template-parameter-1-1> = int]’ 100362.C:38:14: required from here 100362.C:30:18: internal compiler error: in lookup_template_class_1, at cp/pt.c:10005 30 | [this](auto) { | ^ 0xd154c5 lookup_template_class_1 /home/mpolacek/src/gcc11/gcc/cp/pt.c:10005 0xd16c95 lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*, int, int) /home/mpolacek/src/gcc11/gcc/cp/pt.c:10244 0xd2585c tsubst_aggr_type /home/mpolacek/src/gcc11/gcc/cp/pt.c:13639 0xd3227f tsubst(tree_node*, tree_node*, int, tree_node*) /home/mpolacek/src/gcc11/gcc/cp/pt.c:15578 0xd3221f tsubst(tree_node*, tree_node*, int, tree_node*) /home/mpolacek/src/gcc11/gcc/cp/pt.c:15569 0xd2d9d6 tsubst_decl /home/mpolacek/src/gcc11/gcc/cp/pt.c:14583 0xd36633 tsubst_copy /home/mpolacek/src/gcc11/gcc/cp/pt.c:16661 0xd4eeef tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mpolacek/src/gcc11/gcc/cp/pt.c:20821 0xd492ec tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mpolacek/src/gcc11/gcc/cp/pt.c:19719 0xd4774c tsubst_non_call_postfix_expression /home/mpolacek/src/gcc11/gcc/cp/pt.c:19292 0xd4daed tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mpolacek/src/gcc11/gcc/cp/pt.c:20601 0xd4711f tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/mpolacek/src/gcc11/gcc/cp/pt.c:19198 0xd2f8c2 tsubst_decl /home/mpolacek/src/gcc11/gcc/cp/pt.c:14933 0xd37939 tsubst_copy /home/mpolacek/src/gcc11/gcc/cp/pt.c:16796 0xd4eeef tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mpolacek/src/gcc11/gcc/cp/pt.c:20821 0xd492ec tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mpolacek/src/gcc11/gcc/cp/pt.c:19719 0xd4774c tsubst_non_call_postfix_expression /home/mpolacek/src/gcc11/gcc/cp/pt.c:19292 0xd4daed tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/mpolacek/src/gcc11/gcc/cp/pt.c:20601 0xd34dbb tsubst(tree_node*, tree_node*, int, tree_node*) /home/mpolacek/src/gcc11/gcc/cp/pt.c:16223 0xd2036e tsubst_template_arg(tree_node*, tree_node*, int, tree_node*) /home/mpolacek/src/gcc11/gcc/cp/pt.c:12300
next prev parent reply other threads:[~2021-04-30 22:37 UTC|newest] Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-30 18:54 [Bug c++/100362] New: " enolan at alumni dot cmu.edu 2021-04-30 21:32 ` [Bug c++/100362] " mpolacek at gcc dot gnu.org 2021-04-30 22:37 ` mpolacek at gcc dot gnu.org [this message] 2021-05-03 7:34 ` [Bug c++/100362] [11/12 Regression] " rguenth at gcc dot gnu.org 2021-05-03 14:32 ` ppalka at gcc dot gnu.org 2021-05-03 15:44 ` ppalka at gcc dot gnu.org 2021-05-03 17:36 ` cvs-commit at gcc dot gnu.org 2021-05-03 19:15 ` cvs-commit at gcc dot gnu.org 2021-05-03 19:16 ` ppalka at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-100362-4-Sei5tzXeMq@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).