Let this() figure out T implicitly?
Timon Gehr
timon.gehr at gmx.ch
Fri Feb 17 17:59:37 PST 2012
On 02/18/2012 12:04 AM, Ali Çehreli wrote:
> 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?
The constructor it is, and B is a class, not a struct.
> {
> 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
>
Why? What useful semantics would that have for classes?
More information about the Digitalmars-d-learn
mailing list