On 03/19/2010 07:53 PM, Moritz Warning wrote:
On Fri, 19 Mar 2010 19:29:24 -0400, bearophile wrote:
(I am looking for rough corners in D, or in my knowledge of D.)
[..]
template IsPointer1(T) {
enum bool IsPointer1 = is(T : T*);
}
void main() {
int* ptr;
static assert(IsPointer1!(typeof(ptr))); // Err
}
But it asserts, do you know why?
I think the problem is that is(T : T*) becomes is(int* : int**)
and that's false.
Then I have written a different program:
[..]
enum bool IsPointer2 = is(typeof(*T)) || is(T == void*);
[..]
Do you know why IsPointer2 is true for the dynamic array type too?
.. no idea.
Curious behavior DArrays exhibit:
void main(){
int[] i = [5,4,3,2,1];
writeln(*i); // prints 5
}
Ick.