http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52748



--- Comment #16 from Nathan Ridge <zeratul976 at hotmail dot com> 2013-04-12 
07:22:20 UTC ---

(In reply to comment #15)

> (In reply to comment #14)

> > Here is a related example that still fails to compile:

> 

> Fixed.



It still fails if we make S a template:





template <int> struct A;



template <typename T> struct B : A<sizeof(T)> {};



template <typename F>

B<typename F::type> operator-(F);



template <typename T>

struct S

{

    struct F

    {

        typedef S type;

    };



    auto foo() -> decltype(-F());

};



int main()

{   

    S<int> s;

}





test.cpp: In instantiation of 'struct B<S<int> >':

test.cpp:16:28:   required from 'struct S<int>'

test.cpp:21:12:   required from here

test.cpp:3:42: error: invalid application of 'sizeof' to incomplete type

'S<int>'

 template <typename T> struct B : A<sizeof(T)> {};

                                          ^



Tested with r197837.

Reply via email to