Boost Spirit での rule では二つ目のテンプレート変数の括弧を忘れないように ― 2021年04月04日 11時03分11秒
qi::rule では、第一引数に iterator、第二引数に読み込む型、第三引数に skipper 等と渡していく。
この二つ目の引数は、初期化の式らしく、ここで括弧を忘れると延々と続く、分かりづらいエラーになるのに最近になって気が付いた。
qi::rule< Iterator, std::string(), Skipper > name_;
加えて、第二引き数がプリミティブ型だと、括弧を忘れてもコンパイルには影響が無いようで、一行足した後に不可解なエラーを見るようになって、前後に括弧無しの行があったりすると深みにはまる。
クラス型でも括弧を忘れてもコンパイル出来ているケースが手元であった。実はこの場合の違いは把握仕切れていない。ただ、括弧を付けていてエラーになることはないので、余計なエラーを避ける習慣として気を付けている。
最近のコメント