#include <typeinfo.h>
// 使用したC++キーワードの総数 : 62
// なお、実行しても何も起こりませんのであしからず。

namespace N{
	extern double D = 7.0;
	template <typename T>
	class C{
	 public:
		static long L;
		
		explicit C(T volatile * const P)
				:M(const_cast<T*>(P)){
		}
		
		virtual ~C(){
			try{
				(*this) >> ' ';
			}catch(...){
				auto float f=3.14;
			}
		}
		friend void operator >>(C& O,T P){
			throw 0;
		}
	 protected:
		union{
			T *M;
			signed G;
		};
	 private:
	};
	typedef C<char> A;
	
	struct S : A{
		enum E{
			J,K,L
		} Q;
		mutable bool B;
		S(A& O);
	};
	inline S::S(A& O):A(O){
		if( dynamic_cast<S*>(&O) ){
			register S *R = static_cast<S*>(&O);
			B = reinterpret_cast<unsigned>(R) ? true : false;
		}else{
			for(short I=0; M[I]; I++ ){
					
				switch((wchar_t)M[I]){
				 case L' ':
					continue;
				 default:
					do goto L;
					while(sizeof(typeid(A)));
				 L:
					break;
				}
			}
		}
	}
}
using N::A;
int main()
{
	asm ;
	delete new N::S((A&)A("Hello world"));
	return 0;
}

