<p>Yes. At least as the compiler would say. It's a little odd but I believe that is how the D Nam mangling works. I personally just think of Foo!(Class) as the type.</p>
<div class="gmail_quote">On Feb 17, 2012 8:05 AM, "kraybourne" <<a href="mailto:stdin@kraybourne.com">stdin@kraybourne.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On 2/17/12 1:51 PM, Kevin Cox wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The error message is saying that you are trying to use Foo as a type but<br>
Foo is not a type, it is a template for a type.<br>
<br>
</blockquote>
<br>
Ah, so module.Foo is really not a class, but a template? I think I get it! Thanks!<br>
<br>
(Is then module.Foo(int).Foo the actual class type? I think I've seen errors like that pop up...)<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Feb 17, 2012 7:20 AM, "kraybourne" <<a href="mailto:stdin@kraybourne.com" target="_blank">stdin@kraybourne.com</a><br>
<mailto:<a href="mailto:stdin@kraybourne.com" target="_blank">stdin@kraybourne.com</a>>> wrote:<br>
<br>
Hi!<br>
<br>
This doesn't work:<br>
<br>
import std.stdio;<br>
class Foo(T)<br>
{<br>
T t;<br>
this(T val)<br>
{<br>
t = val;<br>
}<br>
}<br>
<br>
void main()<br>
{<br>
auto o = new Foo(5);<br>
}<br>
_____<br>
<br>
$ dmd foo<br>
foo.d(13): Error: class foo.Foo(T) is used as a type<br>
$ _<br>
<br>
So I must<br>
<br>
auto o = new Foo!(int)(5);<br>
<br>
Then it compiles. Is it possible to have this() figure out the type<br>
some way? (In this particular example it's perhaps not such a big<br>
deal. But imagine a lot more args.)<br>
<br>
(Side note: What _does_ that error message mean? I don't get it.)<br>
<br>
thanks<br>
/krbrn<br>
<br>
</blockquote>
<br>
</blockquote></div>