ページ 1 / 1
{}?
Posted: 2009年1月05日(月) 16:41
by kaiten
おかしなタイトルですみません。いまいち言い方が思いつかなかったもので。
いろいろ探していて[url]http://<a%20href=[/url]なるものを入手したのですが疑問に思ったことがあるので……
普通のfor文のように{}が使えるようになっているのですが、このようにする方法が知りたいのです。
ソース見て寸刻で頭がこんがらがってしまったのですが、一体どのような方法で行っているのでしょうか?
解ればでいいので教えていただけるとありがたいです。
#最近質問してばかりだなぁ……
Re:{}?
Posted: 2009年1月05日(月) 16:59
by Mist
ヘッダの中身を読んだ?
431行目~456行目みるとわかると思うけど、evil_for = forなんだから{}が使えるのは当たりまえ。
Re:{}?
Posted: 2009年1月05日(月) 17:05
by Mist
もうちょっと詳しく書くと
evil_for(c) {
...
}
は
#define evil_for(c) evil_for_ex(c, c.begin(), evil_i(c) != c.end(), ++evil_i(c))
と定義されているから
evil_for_ex(c, c.begin(), evil_i(c) != c.end(), ++evil_i(c)) {
...
}
となり、そして
#define evil_for_ex(c, begin, expr, incr) \
for(evil_for_tools::unknown_holder c##_evil_i( \
evil_for_tools::copy_object(begin), evil_for_tools::get_deleter(c)); \
expr; incr)
と定義されているので
for(evil_for_tools::unknown_holder c##_evil_i(evil_for_tools::copy_object(begin),
evil_for_tools::get_deleter(c));
expr; incr) {
...
}
となる。
Re:{}?
Posted: 2009年1月06日(火) 08:46
by kaiten
自分で思っていたより稚拙…というかしょーもない質問してしまったようです(汗
#defineをこのように使ったことがなかったので…といっても予測ついていいレベルですね。
しかし、恐らく指摘していただかなければ自分ではずっとわからないと思って終わらせていたと思います。
Mistさんのおかげで理解することができました。ありがとうございます。