www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - templated overloaded operator problem.. :~

reply "Lloyd Dupont" <ld-REMOVE galador.net> writes:
I have 2 overload of the opCall() in one of my class.
They cause a compile time error / conflict... any idea on how to solve it?
=====
class MemberDesc
{
    Variant opCall(Object target)
    {
        return getter(target);
    }
    void opCall(T)(Object target, T value)
   {
        setter(target, Variant(value));
    }

    const string name;
    const TypeInfo type;
    const Variant function(Object target) getter;
    const void function(Object target, Variant value) setter;
    
    this(
         string name, 
         TypeInfo type,
         Variant function(Object target) getter, 
         void function(Object target, Variant value) setter = null)
    {
        this.name = name;
        this.type = type;
        this.getter = getter;
        this.setter = setter;
    }
}
=====
Jun 16 2011
parent reply David Nadlinger <see klickverbot.at> writes:
Add a pair of parentheses to the first overload to add an empty template 
argument list – currently, template and non-template functions can't be 
overloaded.

David


On 6/16/11 2:59 PM, Lloyd Dupont wrote:
 I have 2 overload of the opCall() in one of my class.
 They cause a compile time error / conflict... any idea on how to solve it?
 =====
 class MemberDesc
 {
 Variant opCall(Object target)
 {
 return getter(target);
 }
 void opCall(T)(Object target, T value)
 {
 setter(target, Variant(value));
 }

 const string name;
 const TypeInfo type;
 const Variant function(Object target) getter;
 const void function(Object target, Variant value) setter;
 this(
 string name, TypeInfo type,
 Variant function(Object target) getter, void function(Object target,
 Variant value) setter = null)
 {
 this.name = name;
 this.type = type;
 this.getter = getter;
 this.setter = setter;
 }
 }
 =====
Jun 16 2011
parent "Lloyd Dupont" <ld-REMOVE galador.net> writes:
Ho thanks, even better than the work around I just found! :)


"David Nadlinger"  wrote in message news:itcvbj$1td2$1 digitalmars.com...

Add a pair of parentheses to the first overload to add an empty template
argument list – currently, template and non-template functions can't be
overloaded.

David
Jun 16 2011