Let this() figure out T implicitly?

Ali Çehreli acehreli at yahoo.com
Fri Feb 17 15:04:01 PST 2012


On 02/17/2012 09:08 AM, Steven Schveighoffer wrote:

 > What you are asking for is IFTI (Implicit Function Template
 > Instantiation) on constructors, and is perfectly possible, but not
 > implemented:
 >
 > http://d.puremagic.com/issues/show_bug.cgi?id=6082

What was the resolution for the case when the constructor is a template? 
I think that's why IFTI doesn't work for structs and classes in C++. 
Although, I can't get the following to compile in D anyway (that old and 
annoying error message again! :p):

   Error: no property 'opCall' for type 'deneme.B'

import std.conv;

class B
{
     string s;

     this(T)(T t)   // <-- Is the struct a template
                    //     or the constructor a template?
     {
         s = to!string(t);
     }
}

void main()
{
     auto b0 = B(42);
}

I wasn't around when the static opCall() was designed but it is probably 
the very first thing that bugged me about D. :) I want B(42) to be 
object construction, not opCall(), which is not even defined.

Ali



More information about the Digitalmars-d-learn mailing list