public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "ville.voutilainen at gmail dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/59701] New: A variadic alias template aliasing another variadic alias template doesn't work Date: Mon, 06 Jan 2014 15:17:00 -0000 [thread overview] Message-ID: <bug-59701-4@http.gcc.gnu.org/bugzilla/> (raw) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59701 Bug ID: 59701 Summary: A variadic alias template aliasing another variadic alias template doesn't work Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ville.voutilainen at gmail dot com template<typename... Args> struct foo { }; template<typename T, typename... Args> using bar = foo<T, Args...>; template<typename T, typename... Args> using baz = bar<Args..., T>; int main (int argc, char *argv[]) { } This gives edoceo7.cpp: In substitution of ‘template<class T, class ... Args> using bar = foo<T, Args ...> [with T = Args ...; Args = {<expression error>}]’: edoceo7.cpp:3:66: required from here edoceo7.cpp:2:67: error: template argument 2 is invalid template<typename T, typename... Args> using bar = foo<T, Args...>; ^ Multiple clang versions accept the code. Some clang versions ICE on it, but that's another matter. :) >From gcc-bugs-return-439399-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Mon Jan 06 15:35:33 2014 Return-Path: <gcc-bugs-return-439399-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org> Delivered-To: listarch-gcc-bugs@gcc.gnu.org Received: (qmail 22978 invoked by alias); 6 Jan 2014 15:35:33 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: <gcc-bugs.gcc.gnu.org> List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/> List-Post: <mailto:gcc-bugs@gcc.gnu.org> List-Help: <mailto:gcc-bugs-help@gcc.gnu.org> Sender: gcc-bugs-owner@gcc.gnu.org Delivered-To: mailing list gcc-bugs@gcc.gnu.org Received: (qmail 22910 invoked by uid 48); 6 Jan 2014 15:35:30 -0000 From: "ville.voutilainen at gmail dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/59702] New: Infinite recursion in a late-specified return type of a function template Date: Mon, 06 Jan 2014 15:35:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: ville.voutilainen at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter Message-ID: <bug-59702-4@http.gcc.gnu.org/bugzilla/> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-01/txt/msg00541.txt.bz2 Content-length: 2126 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59702 Bug ID: 59702 Summary: Infinite recursion in a late-specified return type of a function template Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ville.voutilainen at gmail dot com struct A {}; template<typename> int func (A) { return {}; } template<typename T> auto func () -> decltype (func<T> (A{})) { return {}; } int main (int argc, char *argv[]) { func<int> (); } Result: edoceo8.cpp:9:39: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) substituting ‘template<class T> decltype (func<T>(A{})) func() [with T = int]’ auto func () -> decltype (func<T> (A{})) { ^ edoceo8.cpp:9:39: recursively required by substitution of ‘template<class T> decltype (func<T>(A{})) func() [with T = int]’ edoceo8.cpp:9:39: required by substitution of ‘template<class T> decltype (func<T>(A{})) func() [with T = int]’ edoceo8.cpp:16:14: required from here edoceo8.cpp: In function ‘int main(int, char**)’: edoceo8.cpp:16:14: error: no matching function for call to ‘func()’ func<int> (); ^ edoceo8.cpp:16:14: note: candidates are: edoceo8.cpp:4:5: note: template<class> int func(A) int func (A) { ^ edoceo8.cpp:4:5: note: template argument deduction/substitution failed: edoceo8.cpp:16:14: note: candidate expects 1 argument, 0 provided func<int> (); ^ edoceo8.cpp:9:6: note: template<class T> decltype (func<T>(A{})) func() auto func () -> decltype (func<T> (A{})) { ^ edoceo8.cpp:9:6: note: substitution of deduced template arguments resulted in errors seen above It doesn't seem to me like the late-specified return type is even referring to the return type of the latter function template. >From gcc-bugs-return-439400-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Mon Jan 06 15:44:12 2014 Return-Path: <gcc-bugs-return-439400-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org> Delivered-To: listarch-gcc-bugs@gcc.gnu.org Received: (qmail 29848 invoked by alias); 6 Jan 2014 15:44:11 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: <gcc-bugs.gcc.gnu.org> List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/> List-Post: <mailto:gcc-bugs@gcc.gnu.org> List-Help: <mailto:gcc-bugs-help@gcc.gnu.org> Sender: gcc-bugs-owner@gcc.gnu.org Delivered-To: mailing list gcc-bugs@gcc.gnu.org Received: (qmail 29821 invoked by uid 48); 6 Jan 2014 15:44:08 -0000 From: "ville.voutilainen at gmail dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/59702] Infinite recursion in a late-specified return type of a function template Date: Mon, 06 Jan 2014 15:44:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: ville.voutilainen at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: <bug-59702-4-1zNKKDRYfH@http.gcc.gnu.org/bugzilla/> In-Reply-To: <bug-59702-4@http.gcc.gnu.org/bugzilla/> References: <bug-59702-4@http.gcc.gnu.org/bugzilla/> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-01/txt/msg00542.txt.bz2 Content-length: 180 http://gcc.gnu.org/bugzilla/show_bug.cgi?idY702 --- Comment #1 from Ville Voutilainen <ville.voutilainen at gmail dot com> --- I forgot to mention that clang accepts the code.
next reply other threads:[~2014-01-06 15:17 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-01-06 15:17 ville.voutilainen at gmail dot com [this message] 2014-01-10 20:34 ` [Bug c++/59701] " ville.voutilainen at gmail dot com 2015-03-18 20:22 ` [Bug c++/59701] [DR 1430] " paolo.carlini at oracle dot com 2021-08-23 6:40 ` pinskia 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-59701-4@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).