10周年のSPコンテンツ!

変数宣言が可能な std::tie シーズン2

std::tie は代入先の変数をあらかじめ宣言しておかないといけないのが悲しいのでどうにかしてください,おねがい☆ツインズ (decimalbloat & Cryolite)
プログラミング Boost cpp
1
Akso de la Malbono @Cryolite
@decimalbloat えー,これすでに宣言済みの変数への代入と変数宣言を混在できないんですかぁー? 使い勝手悪ぅーい.
Akso de la Malbono @Cryolite
@decimalbloat ちなみにこれ, template のむき出しのコンマに対して安全なんですか?
でちまるさん(実際かわいい) @decimalbloat
宣言済みの変数との混在はともかく,BOOST_FOREACHみたいなカンマの制限があるのは直したい
でちまるさん(実際かわいい) @decimalbloat
@Cryolite 考えるの途中でめんどくさくなったのでやってません
でちまるさん(実際かわいい) @decimalbloat
それやるんだったらSEQ_FOR_EACH_I使わずにFORのままのほうが楽だった
Akso de la Malbono @Cryolite
「C++ を便利にするマクロできたよー」と言っている人が居たとして,そのマクロの引数として型名が取られる場合,そこに std;;pair<int, int> あたりを突っ込むとそこそこ撃墜できます.
Akso de la Malbono @Cryolite
@decimalbloat 多分知っているとは思いますけれど,マクロの引数として回している間は関数の引数としてくるんでしまって,使う段になった時にそこから取り出すのが常套手段ですね.
Akso de la Malbono @Cryolite
っていうか TIE((X)(Y)(Z), TUPLE) の構文で良いならそこまで難しい要素無いような? (実装する前から大口を叩いて後で後悔するパタン)
でちまるさん(実際かわいい) @decimalbloat
@Cryolite その方法だと変数名までは取り出せないのでは
でちまるさん(実際かわいい) @decimalbloat
と思ったけど式の側に剥き出しカンマがあるとまずいな…__ARGS__さんに活躍してもらうしか
Akso de la Malbono @Cryolite
@decimalbloat 実装する前から大口を叩いて大後悔時代の大海原へ漕ぎ出してます.テヘッ☆
でちまるさん(実際かわいい) @decimalbloat
@Cryolite PP_SEQだとよきに図らってくれないのでC++11対応したTUPLE_REMとTUPLE_EATでやれば大丈夫です.
Akso de la Malbono @Cryolite
@decimalbloat ふむ. variadic TUPLE_REM/TUPLE_EAT で簡単になんとかなりますね,確かに.
Akso de la Malbono @Cryolite
@decimalbloat 宣言と代入の混在は copy-initialization 使えば何とかなりませんか? これだと型名を書く位置に auto 使うだけで TIE_AUTO が要らなくなりますし.
Akso de la Malbono @Cryolite
ただし copy-initialization 使うと型を明示的に書いた場合に direct-initialization と semantics が変わる(けど,まー,元々 std::tie は代入なんだしそれでいーんじゃね,的な)
Akso de la Malbono @Cryolite
なんか最近,夜な夜な幽霊と闇のサバト開いてる感ある.
でちまるさん(実際かわいい) @decimalbloat
@Cryolite というかそもそもAUTOじゃないほうのTIEは普通に混在してても使える気が
でちまるさん(実際かわいい) @decimalbloat
あ,そうか.初期化に = 使ってないんだった
でちまるさん(実際かわいい) @decimalbloat
うわ,変数リストの終端の認識めんどくさい…
残りを読む(9)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする