Is there any reason why the alias template parameter cannot be a literal?
template Foo(alias b) {
   int X = b;
}
void main() {
  int y = 4;
  mixin Foo!(y);  // This is okay
  mixin Foo!(4);  // This fails to compile 
   // "mixin Foo!(4) does not match any template declaration"
}
       
-- 
Derek Parnell
Melbourne, Australia
skype: derek.j.parnell