{}おお、コンパイルが通った。先手の49金の移動できる升が表示された。考えてみると次のように内部的に変換されるわけよな。}++itのところは空だから問題ないとして、it!=ZERO_BBの比較、少し無駄なような気はする。Bitboardがゼロかどうかを判定するのは、こんな他のBitboard(ZERO_BB)と比較しなくとも、内部的に保持しているSSEレジスタの値がゼロであるかを調べるほうが速いはずで、要するに、ここはend()と比較するように展開して欲しいわけではなく、itがendであるかどうかは自分で書かせて欲しいわけだ。forは次のように展開して欲しい。}こうなっている定義を右辺値見ないようにこう変えてしまえばいいのかも知れないが。}これだと他のところでBitboard同士の比較が出来なくなってしまうしな...。ちなみにBitboardからboolへの変換子は次のようにしてある。}実際のところ、Bitboardに関してはZERO_BBと比較したところで速度低下はほとんどないかも知れないが...よくわからないので誰か実験してコメントください。それにしても、悩ましい。forにend()みたいなものが要るのだ...。これ設計した奴は、何故、必ずend()が事前に得られると思っているのだ。b.pop();...}これをforで書けるようにしたいだけなんだよ。なんで20年前からdefineマクロで出来ることがいまだにforで書けないんだよ。C++なんとか委員会はこの20年間、何やってたんだよ。次のように展開して欲しかったなぁ...。これなら、end()みたいなものは必要ないしな。これくらい書いておけば、C++のエキスパートが「それ、XXXで出来るよ」とか速攻でコメントをくれるだろう。2015偉い人に助けてもらおうと思ったら、本当にどえらいところから返信もらってしまった...。追加で記事を書きました。:あんまり火種は注ぎたくないので穏便にお願いしたいのですけど、江添さんが代替え案をブログに書いておいででした。http://cpplover.blogspot.jp/2015/12/blog-post.html自分も整数を展開するためにわざわざクラス書いたことありますけど、毎度それをどっかから引っ張ってくるのは手間なのであきらめました。For文自体は大好きなのでもうちょっと手軽になんとか使いたいところです。:そのコメント、リンクが向こうのサイトのトップページになっていたので個別ページのリンクに修正しました。