Thread overview
Explicit template argument specification for member templates
Nov 24, 2002
Christof Meerwald
Nov 28, 2002
Neo
Jan 06, 2003
Christof Meerwald
Jan 07, 2003
Christof Meerwald
November 24, 2002
Here is a test-case:

struct A
{
  template<typename T>
  int f(T t)
  {
    return T::val;
  }

  template<typename T>
  int g()
  {
    return T::val;
  }
};

struct B
{
  static const int val = 0;
};


int main()
{
  A a;
  B b;

  return a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>();
  // Error: '(' expected following simple type name
}


bye, Christof

-- 
http://cmeerw.org                                 JID: cmeerw@jabber.at mailto cmeerw at web.de

...and what have you contributed to the Net?
November 28, 2002
i think that's because extra wrong directed information
it's like u r parametizing the function in advance and parameter in function
may be different and it may create conflict, and hence error is perfectly
right

"Christof Meerwald" <cmeerw@web.de> wrote in message news:arqv16$eqp$1@digitaldaemon.com...
> Here is a test-case:
>
> struct A
> {
>   template<typename T>
>   int f(T t)
>   {
>     return T::val;
>   }
>
>   template<typename T>
>   int g()
>   {
>     return T::val;
>   }
> };
>
> struct B
> {
>   static const int val = 0;
> };
>
>
> int main()
> {
>   A a;
>   B b;
>
>   return a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>();
>   // Error: '(' expected following simple type name
> }
>
>
> bye, Christof
>
> --
> http://cmeerw.org                                 JID: cmeerw@jabber.at mailto cmeerw at web.de
>
> ...and what have you contributed to the Net?


January 06, 2003
Still doesn't work if the program is slightly modified.

On Sun, 24 Nov 2002 16:33:42 +0000 (UTC), Christof Meerwald wrote:
> Here is a test-case:
> 
> struct A
> {
>   template<typename T>
>   int f(T t)
>   {
>     return T::val;
>   }
> 
>   template<typename T>
>   int g()
>   {
>     return T::val;
>   }
> };
> 
> struct B
> {
>   static const int val = 0;
> };
> 
> 
> int main()
> {
>   A a;
>   B b;
> 
>   return a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>();
>   // Error: '(' expected following simple type name

  int i = a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>();
  int j = a.f<C>(c) + a.f<>(c) + a.f(c) + a.g<C>();
  // Error: 'A::g' is already defined

> }


bye, Christof

-- 
http://cmeerw.org                                 JID: cmeerw@jabber.at mailto cmeerw at web.de

...and what have you contributed to the Net?
January 07, 2003
Oops, missed the definition of C:

On Mon, 6 Jan 2003 19:23:56 +0000 (UTC), Christof Meerwald wrote:
> Still doesn't work if the program is slightly modified.
> 
> On Sun, 24 Nov 2002 16:33:42 +0000 (UTC), Christof Meerwald wrote:
>> Here is a test-case:
>> 
>> struct A
>> {
>>   template<typename T>
>>   int f(T t)
>>   {
>>     return T::val;
>>   }
>> 
>>   template<typename T>
>>   int g()
>>   {
>>     return T::val;
>>   }
>> };
>> 
>> struct B
>> {
>>   static const int val = 0;
>> };

struct C
{
  static const int val = 1;
};

>> int main()
>> {
>>   A a;
>>   B b;
>> 
>>   return a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>();
>>   // Error: '(' expected following simple type name
> 
>   int i = a.f<B>(b) + a.f<>(b) + a.f(b) + a.g<B>();
>   int j = a.f<C>(c) + a.f<>(c) + a.f(c) + a.g<C>();
>   // Error: 'A::g' is already defined
> 
>> }


bye, Christof

-- 
http://cmeerw.org                                 JID: cmeerw@jabber.at mailto cmeerw at web.de

...and what have you contributed to the Net?