1

Boost Proto 式のうち、proto_tagメンバーを期待できないのはいつですか? たとえば、次のいずれかの方法を使用して、プレースホルダーのタグの種類について問い合わせることができます。

typedef proto::tag_of<decltype(_1)>::type ta;
typedef decltype(_1)::proto_tag           tb;

しかし、式の子のタグ タイプについて尋ねると、proto_tagメンバーが存在しないように見えます。次のコードの 3 行目でエラーが発生します。

auto f = _1 + _2;
typedef proto::tag_of<decltype(proto::child_c<0>(f))>::type tc;
typedef decltype(proto::child_c<0>(f))::proto_tag           td; // error

Clang および GCC のエラーは、問題の型がクラス、名前空間、またはスコープ付きの列挙型ではないことを報告します。Clang 3.2、GCC 4.7.2、および Boost 1.53 を使用しています。

4

1 に答える 1