Templates with the same name as methods not legal?

Simen Haugen simen at norstat.no
Thu Apr 19 05:55:10 PDT 2007


I though the compiler could see the differance. Thanks.

"Frits van Bommel" <fvbommel at REMwOVExCAPSs.nl> wrote in message 
news:f07lk7$29kv$1 at digitalmars.com...
> Simen Haugen wrote:
>> If I try to call a template when a method with the same name exists I get 
>> a compiler error:
>>
>> template isInteger(T)
>> {
>>  static if (is(T == int))
>>   const bool isInteger = true;
>>  else
>>   const bool isInteger = false;
>> }
>>
>> class Test
>> {
>>  bool isInteger()
>>  {
>>   return isInteger!(int); // Yields an compiler error
>>  }
>> }
>>
>> Gives me the error:
>> test.d(15): template instance isInteger is not a template declaration, it 
>> is a function
>
> Naming the member function "isInteger" hides the "isInteger" name for the 
> template while inside the class. The method should "return 
> .isInteger!(int);" instead (notice the added '.') to use the global 
> isInteger template. 




More information about the Digitalmars-d-learn mailing list