C++ 在Boost.proto中将派生类用作终端
假设您希望使用Boost.proto实现一个简单的EDSL(嵌入式域特定语言),并满足以下要求:C++ 在Boost.proto中将派生类用作终端,c++,c++11,boost,boost-proto,C++,C++11,Boost,Boost Proto,假设您希望使用Boost.proto实现一个简单的EDSL(嵌入式域特定语言),并满足以下要求: 自定义类“Vector”作为终端 从“Vector”派生的类也是工作终端,例如Vector10 阅读Boost.proto的手册,似乎与此最相关的示例是“向量:适应非proto终端类型”示例 我对该示例所做的修改: 增加了“向量”类 用质子化向量代替std::Vector 下面是代码(编译): 导致编译错误 vector_proto_baseclass.cc:168:28: error: n
- 自定义类“Vector”作为终端
- 从“Vector”派生的类也是工作终端,例如Vector10
- 增加了“向量”类
- 用质子化向量代替std::Vector
vector_proto_baseclass.cc:168:28: error: no match for ‘operator+’ (operand types are ‘Vector10’ and ‘Vector10’)
我相信Vector的运算符在名称空间VectorOps中定义正确,但ADL不会对派生类起作用
int main()
{
using namespace VectorOps;
Vector10 a,b,c,d;
VectorOps::assign(d, a + b );
}
vector_proto_baseclass.cc:168:28: error: no match for ‘operator+’ (operand types are ‘Vector10’ and ‘Vector10’)