is pointer

bearophile bearophileHUGS at
Sat Mar 20 04:56:32 PDT 2010

Daniel Keep:
> You do realise that "Template Parameters" are a completely different
> thing to "is expressions", right?

Nope. And from the other answers by Moritz and Ellery it seems I am not alone :-)
You are right, this works:

template IsPointer1(T:T*) {
    enum bool IsPointer1 = true;
template IsPointer1(T) {
    enum bool IsPointer1 = false;
void main() {
    static assert(IsPointer1!(int*));
    static assert(!IsPointer1!(int));
    static assert(!IsPointer1!(int[]));

This syntax looks too much similar to the syntax with is():
template IsPointer1(T:T*) {
It's a syntax collision. You realize that I will not be the only one to fall in this little trap.

Bye and thank you,

More information about the Digitalmars-d-learn mailing list