3

この文がC++で有効なのはなぜですか?

qi::rule<Iterator, std::string(), skipper<Iterator> > name;

ここから抽出:

ルールの定義は(再開されて)次のとおりです。

template <typename Iterator, typename T1, typename T2,
                             typename T3, typename T4>
struct rule : boost::proto::extends<bla, bla>, parser<bla, bla>
{
  bla, bla
};

ここから抽出:

ルール定義は型を想定していますが、私はそれにオブジェクトを送信します。可能です?

4

2 に答える 2

3

あなたはそれにオブジェクトを与えません。std::string()引数をとらず、を返す関数のタイプですstd::string

于 2012-11-20T11:58:48.817 に答える
3

このコンテキストでstd::string()は、 を返し、std::stringパラメーターを持たないものの型を意味します。例えば、

std::string foo() { return "Foo!\n"; }

またはのインスタンス

struct Foo
{
  std::string operator()() const { return "Foo!\n"; }
};
于 2012-11-20T12:02:19.227 に答える