Проверить, является ли псевдоним шаблоном в D 2.0

Как проверить, является ли псевдоним шаблоном в D 2.0?

template isTemplate(alias T)
{
    enum bool isTemplate = ???;
}

Обновление:

Он должен работать следующим образом:

struct S(T)
{
    int opCall() { return 0; }
    int opUnary(string s)() if (s == "-") { return 0; }
}

pragma(msg, isTemplate!(S));                 //Should print true
pragma(msg, isTemplate!(S!(int)));           //Should print false
pragma(msg, isTemplate!((S!(int)).opCall));  //Should print false
pragma(msg, isTemplate!((S!(int)).opUnary)); //Should print true

Для справки, вещи, которые не работа:

  • Вы не можете использовать любое выражение вроде T! (...) , потому что не знаете, что поставить вместо эллипсов.

  • Вы не можете скажем & T , потому что это также не работает, если вам просто дано простое старое имя типа.

6
задан Mehrdad 30 March 2011 в 14:42
поделиться