// 29_29-13.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <typeinfo>

using namespace std;

template<typename T=int, int size=100> class mystack {
private:
	int ct;
	T data[size+1];
public:
	mystack() { ct = 0; }
	void push(T dt) { if (ct < size) data[++ct] = dt; }
	T pop() { if (ct > 0) return data[ct--]; else return 0; }
	void stat();
};

// 状態を表示する関数
template<typename T, int size> void mystack<T, size>::stat()
{
	cout << "T=" << typeid(data[0]).name();
	cout << ", size=" << size << '\n';
}

int _tmain(int argc, _TCHAR* argv[])
{
	mystack<> a;
	mystack<double> b;
	mystack<double, 200> c;

	a.stat();
	b.stat();
	c.stat();

	a.push(123);
	cout << a.pop() << '\n';
	
	MessageBox(NULL, _T("Check Console Window"), L"MessageBox", MB_OK);

	return 0;
}

