public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/51203] New: Recursive alias templates not working
@ 2011-11-18 7:49 pubby.8 at gmail dot com
2011-11-18 8:22 ` [Bug c++/51203] " pubby.8 at gmail dot com
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: pubby.8 at gmail dot com @ 2011-11-18 7:49 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51203
Bug #: 51203
Summary: Recursive alias templates not working
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: pubby.8@gmail.com
-std=c++11
gcc version 4.7.0 20111112 (experimental) (GCC)
I presume this is correctly formed code:
template <typename t>
struct foo {
template <int n>
using next = typename foo<t>::next<n + 1>;
};
main.cpp:4:37: error: expected ‘;’ before ‘<’ token
main.cpp:4:37: error: expected unqualified-id before ‘<’ token
Interestingly, changing the line to this compiles so long as next isn't used:
using next = typename foo<t>::next;
The error is very similar to this ill-formed code:
using next<n> = int;
main.cpp:4:13: error: expected ‘=’ before ‘<’ token
main.cpp:4:13: error: expected type-specifier before ‘<’ token
main.cpp:4:13: error: expected ‘;’ before ‘<’ token
main.cpp:4:13: error: expected unqualified-id before ‘<’ token
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/51203] Recursive alias templates not working
2011-11-18 7:49 [Bug c++/51203] New: Recursive alias templates not working pubby.8 at gmail dot com
@ 2011-11-18 8:22 ` pubby.8 at gmail dot com
2011-11-18 8:27 ` [Bug c++/51203] Recursive alias template specialization causes compiler segfault pubby.8 at gmail dot com
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: pubby.8 at gmail dot com @ 2011-11-18 8:22 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51203
--- Comment #1 from Pubby8 <pubby.8 at gmail dot com> 2011-11-18 07:53:36 UTC ---
Whoops! I seem to have left out the template qualifier.
template <typename t>
struct foo {
template <int n>
using next = typename foo<t>::next<n + 1>;
template <>
using next<10> = int; // not sure if alias templates can be specialized
};
int main() {
foo<int>::next<1> x;
}
Although now I am getting a compiler seg fault:
main.cpp:5:13: error: explicit specialization in non-namespace scope ‘struct
foo<t>’
g++-4.7: internal compiler error: Segmentation fault (program cc1plus)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/51203] Recursive alias template specialization causes compiler segfault
2011-11-18 7:49 [Bug c++/51203] New: Recursive alias templates not working pubby.8 at gmail dot com
2011-11-18 8:22 ` [Bug c++/51203] " pubby.8 at gmail dot com
@ 2011-11-18 8:27 ` pubby.8 at gmail dot com
2011-11-18 19:17 ` [Bug c++/51203] [C++0x] " daniel.kruegler at googlemail dot com
2011-11-25 13:28 ` dodji at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: pubby.8 at gmail dot com @ 2011-11-18 8:27 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51203
Pubby8 <pubby.8 at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |trivial
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/51203] [C++0x] Recursive alias template specialization causes compiler segfault
2011-11-18 7:49 [Bug c++/51203] New: Recursive alias templates not working pubby.8 at gmail dot com
2011-11-18 8:22 ` [Bug c++/51203] " pubby.8 at gmail dot com
2011-11-18 8:27 ` [Bug c++/51203] Recursive alias template specialization causes compiler segfault pubby.8 at gmail dot com
@ 2011-11-18 19:17 ` daniel.kruegler at googlemail dot com
2011-11-25 13:28 ` dodji at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: daniel.kruegler at googlemail dot com @ 2011-11-18 19:17 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51203
Daniel Krügler <daniel.kruegler at googlemail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |daniel.kruegler at
| |googlemail dot com
--- Comment #2 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2011-11-18 19:03:14 UTC ---
(In reply to comment #1)
> template <typename t>
> struct foo {
> template <int n>
> using next = typename foo<t>::next<n + 1>;
> template <>
> using next<10> = int; // not sure if alias templates can be specialized
> };
Alias templates cannot be specialized, this is by design.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/51203] [C++0x] Recursive alias template specialization causes compiler segfault
2011-11-18 7:49 [Bug c++/51203] New: Recursive alias templates not working pubby.8 at gmail dot com
` (2 preceding siblings ...)
2011-11-18 19:17 ` [Bug c++/51203] [C++0x] " daniel.kruegler at googlemail dot com
@ 2011-11-25 13:28 ` dodji at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: dodji at gcc dot gnu.org @ 2011-11-25 13:28 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51203
Dodji Seketeli <dodji at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
--- Comment #3 from Dodji Seketeli <dodji at gcc dot gnu.org> 2011-11-25 12:59:05 UTC ---
commenting on the below,
template <typename t>
struct foo {
template <int n>
using next = typename foo<t>::next<n + 1>;//#1
template <>
using next<10> = int; // #2 not sure if alias templates can be
specialized
};
I think #1 is invalid because [temp.alias]/3 says:
"The type-id in an alias template declaration shall not refer to the
alias template being declared."
In other words, the name "next" should not appear at the right hand
side of the "=" in the alias template declaration there.
And in #2, there is the additional invalid specialization of the alias
template, already raised by Daniel on comment #2.
Furthermore, I am not getting any ICE anymore on this from trunk of today
at revision r181718.
So I am closing this as fixed for now.
Thank you for filing this.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-11-25 12:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-11-18 7:49 [Bug c++/51203] New: Recursive alias templates not working pubby.8 at gmail dot com
2011-11-18 8:22 ` [Bug c++/51203] " pubby.8 at gmail dot com
2011-11-18 8:27 ` [Bug c++/51203] Recursive alias template specialization causes compiler segfault pubby.8 at gmail dot com
2011-11-18 19:17 ` [Bug c++/51203] [C++0x] " daniel.kruegler at googlemail dot com
2011-11-25 13:28 ` dodji 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).