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 を作りたかったんだ。ただ、それだけなんだ。
さあ、君の意見を聞こうか。