public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/65308] New: [C++14] auto-returning function template used inside function template has problems with being assigned to auto @ 2015-03-04 10:11 jvp4846 at g dot rit.edu 2015-03-04 11:34 ` [Bug c++/65308] [C++14] auto-returning function template used inside function template doesn't allow template members to be called redi at gcc dot gnu.org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: jvp4846 at g dot rit.edu @ 2015-03-04 10:11 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65308 Bug ID: 65308 Summary: [C++14] auto-returning function template used inside function template has problems with being assigned to auto Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jvp4846 at g dot rit.edu Created attachment 34945 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34945&action=edit Sample I'm 99% sure this is valid C++14, but there's always the chance I misunderstood something. If you call a function template (`make_thing` in the sample) that returns auto from another function template (`foo` in the sample), and try to use a template member function from that return value, GCC emits the following diagnostic: test.cpp: In function 'void foo()': test.cpp:12:26: error: expected primary-expression before 'int' make_thing<int>().func<int>(); This error doesn't occur if `make_thing` is defined to return `thing`, or if `make_thing` is not a template, or if `foo` is not a template. Adding `template` before the call to `func` also fixes this, but that shouldn't be necessary. I've reproduced this under GCC 4.9.2 and the GCC 5.0 snapshot from Debian. Here are their exact versions: g++ (Ubuntu 4.9.2-0ubuntu1~14.04) 4.9.2 g++ (Debian 20150225-1) 5.0.0 20150225 (experimental) [trunk revision 220970] ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/65308] [C++14] auto-returning function template used inside function template doesn't allow template members to be called 2015-03-04 10:11 [Bug c++/65308] New: [C++14] auto-returning function template used inside function template has problems with being assigned to auto jvp4846 at g dot rit.edu @ 2015-03-04 11:34 ` redi at gcc dot gnu.org 2015-03-04 11:36 ` redi at gcc dot gnu.org 2022-01-07 19:37 ` ppalka at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: redi at gcc dot gnu.org @ 2015-03-04 11:34 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65308 Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-03-04 Ever confirmed|0 |1 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- It compiles OK if you change it to: make_thing<int>().template func<int>(); which I would have thought is necessary, but EDG and Clang don't require it. Maybe there's some defect report that changed whether the "template" keyword is required there, and G++ doesn't implement that yet. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/65308] [C++14] auto-returning function template used inside function template doesn't allow template members to be called 2015-03-04 10:11 [Bug c++/65308] New: [C++14] auto-returning function template used inside function template has problems with being assigned to auto jvp4846 at g dot rit.edu 2015-03-04 11:34 ` [Bug c++/65308] [C++14] auto-returning function template used inside function template doesn't allow template members to be called redi at gcc dot gnu.org @ 2015-03-04 11:36 ` redi at gcc dot gnu.org 2022-01-07 19:37 ` ppalka at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: redi at gcc dot gnu.org @ 2015-03-04 11:36 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65308 Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |rejects-valid --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Actually no, the 'template' keyword is not required there, but maybe G++ is confused into thinking that the expression is dependent because of the deduced return type for make_thing<int>() ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/65308] [C++14] auto-returning function template used inside function template doesn't allow template members to be called 2015-03-04 10:11 [Bug c++/65308] New: [C++14] auto-returning function template used inside function template has problems with being assigned to auto jvp4846 at g dot rit.edu 2015-03-04 11:34 ` [Bug c++/65308] [C++14] auto-returning function template used inside function template doesn't allow template members to be called redi at gcc dot gnu.org 2015-03-04 11:36 ` redi at gcc dot gnu.org @ 2022-01-07 19:37 ` ppalka at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: ppalka at gcc dot gnu.org @ 2022-01-07 19:37 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65308 Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |DUPLICATE Status|NEW |RESOLVED CC| |ppalka at gcc dot gnu.org --- Comment #4 from Patrick Palka <ppalka at gcc dot gnu.org> --- Looks like this same bug was reported much later as PR81045 and fixed for GCC 8 and 7.2. Thanks for the bug report and ping. *** This bug has been marked as a duplicate of bug 81045 *** ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-01-07 19:37 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-03-04 10:11 [Bug c++/65308] New: [C++14] auto-returning function template used inside function template has problems with being assigned to auto jvp4846 at g dot rit.edu 2015-03-04 11:34 ` [Bug c++/65308] [C++14] auto-returning function template used inside function template doesn't allow template members to be called redi at gcc dot gnu.org 2015-03-04 11:36 ` redi at gcc dot gnu.org 2022-01-07 19:37 ` ppalka at gcc dot gnu.org
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).