Haven't compiled it. But should work.
class Stack (T)
{
public:
this() { top = -1; }
void push(T i)
{ st[++top] = i; }
T pop()
{ return st[top--]; }
private:
int top;
T[100] st;
};
int main ( char[][] args)
{
auto ii = new Stack!(int);
auto ss = Stack!(char[]);
ii.push(25);
ss.push("Hello");
return 0;
}