On 09/24/2012 09:41 AM, monarch_dodra wrote:
...
Regarding the ".init" issue, I hadn't thought of that, but it can
be worked around pretty easily with an is(R r):
--------
template Hello(R)
if ( is(R r) &&
is(typeof(takeExactly(r, 1))) &&
is(R == typeof(takeExactly(r, 1)))
)
{
alias R Hello;
}
--------
After that, I guess it is indeed one implementation detail vs the
other.
I don't think this does what you think it does. The 'is(R r)' declares r
to be an alias for R. So 'r' is a type in that code snippet.
Also, is(typeof(takeExactly(R, 1))) && is(R == typeof(takeExactly(R, 1)))
can be written in a more compact way as
is(typeof(takeExactly(R, 1)) == R)
IMO, it really depends on whether or not you'd want "int[]" to be
considered the return type of a takeExactly :/ Maybe it is, maybe
it ain't.