对于 Boost Proto 表达式,我什么时候不应该期待一个proto_tag
成员?我可以使用以下任一方法查询占位符的标签类型:
typedef proto::tag_of<decltype(_1)>::type ta;
typedef decltype(_1)::proto_tag tb;
但是,如果我询问表达式child的标签类型,则该proto_tag
成员似乎不存在;以下代码的第三行给出了错误:
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 的错误报告有问题的类型:is not a class, namespace, or scoped enumeration。我使用 Clang 3.2、GCC 4.7.2 和 Boost 1.53。