foreach
class Iterator{ public: void MoveNext(); bool HasNext() const; void* GetCurrent() const; private: .... };
template< class T > class Array{ public: .... Iterator getIterator(){ .... } };
#define foreach( type , object , iteration , execution ) \ do{ \ for( Iterator it = iteration.getIterator() ; it.HasNext() ; it.MoveNext() ){ \ type& object = *(type*)it.GetCurrent(); \ execution \ } \ }while( false )
Array< int > intArray( 5 ); // intArray をゼロで初期化 foreach( int , obj , intArray , obj = 0; );
うん、悪気は無かったんだ。許してくれとは言わない。ただね、C++ に foreach が標準で付いていないということだけは覚えておいて欲しいんだ。そして僕はこの機能が欲しかった。だから、どうしても C++ で foreach を作りたかったんだ。ただ、それだけなんだ。
さあ、君の意見を聞こうか。