Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Boost.proto中将派生类用作终端_C++_C++11_Boost_Boost Proto - Fatal编程技术网

C++ 在Boost.proto中将派生类用作终端

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

假设您希望使用Boost.proto实现一个简单的EDSL(嵌入式域特定语言),并满足以下要求:

  • 自定义类“Vector”作为终端
  • 从“Vector”派生的类也是工作终端,例如Vector10
阅读Boost.proto的手册,似乎与此最相关的示例是“向量:适应非proto终端类型”示例

我对该示例所做的修改:

  • 增加了“向量”类
  • 用质子化向量代替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’)