1

2 つの要素を持つベクトルを型定義します。次に、他の要素に push_back し、結果の型もベクトルであると予想します。しかし、そうではありません。

例:

typedef boost::fusion::vector<int, double> vec1;
typedef boost::fusion::result_of::push_back<vec1, std::string> vec2;
//boost::is_same<vec2, boost::fusion::vector<int, double, std::string>>::value == false

http://liveworkspace.org/code/361492801eebe24cc5679a1e899a5240

私は何を間違っていますか?

よろしく。

4

1 に答える 1

2

push_backそれ自体を としてエイリアスしましたvec2。使用する必要があります

typedef boost::fusion::result_of::push_back<vec1, std::string>::type vec2;

ただし、タイプが同じではない可能性があることに注意してください。Fusion アルゴリズムはタイプを保持する必要はありません (push_back関数は遅延ビューを返すことになっているため、vec2ビュー タイプである可能性が最も高いでしょう)。唯一の保証は、それが「Forward Sequence のモデル」vec2になることです。.

于 2011-12-03T10:02:28.670 に答える