Re: Problem with forward declaration of classes with nested templates

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> oh, thanks i thought i simplified as much as i can. But i guess i was
> wrong. Maybe i shouldn't simplify that much. My the real problem
> occurs when using 2 recurring templates like this:
>
> -----------------
> struct a;
> struct b;
>
> struct a
> {
>     template<int i>
>     struct impl : public b::template impl<i>
>     {};
> };
>
> struct b
> {
>     template<int i>
>     struct impl : public a::template impl<i-1>
>     {};
> };
> -----------------

I'm not a language lawyer either (IANALL), but I believe the reason the
above is invalid is because the 'b' in public b::template impl<i> is NOT
argument dependent, and thus does not undergo two-phase lookup, but rather
normal lookup.  Perhaps a real language lawyer can confirm or correct me?

Fang

> but I know i can be happy by rewriting it to:
>
> -----------------
> struct a;
> struct b;
>
> struct a
> {
>     template<int i>
>     struct impl;
> };
>
> struct b
> {
>     template<int i>
>     struct impl;
> };
>
> template<int i>
> struct a::impl : public b::template impl<i>
> {};
>
> template<int i>
> struct b::impl : public a::template impl<i-1>
> {};
> -----------------
>
> But the question still remains, why doesn't it compile. Can you name something ?
>
> Regards,
>   Steven




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux