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 を使用しています。