Can't return void from type function instantiation with dependent args for use
in function declaration.

all versions from 3.4 to the latest 4.3.0 build on x86 cygwin/linux complain
with:

error: invalid parameter type 'void'
...

=========================================

template <int cond>
struct F { typedef void Type; };

template <int I>
struct X {

   // does not accept dependent computed type void!
   // (void* is fine as is non-dependent F<0>::Type)

   typedef typename F<I>::Type ParmT;

   static int func(ParmT) { return 1; }
};

int main()
{
   int i = X<0>::func();
}

========================================

The VisualC++ compilers are fine.


-- 
           Summary: invalid computed void parameter in template
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: paul_m_doc at hotmail dot com


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

Reply via email to