我已经开始构建一个小数据类型,在当前阶段,我在 boost 变体中只有一个递归类型。事实证明,当我尝试实例化我的类型时出现段错误。如果我在递归类型之前放置一个字符串,它可以工作,把它放在它不工作的类型之后。我正在使用 mingw 和 gcc 4.8.1 64bit 和 boost 1.54。
我是否以错误的方式使用了 boost 变体?
#include <boost/variant.hpp>
#include <boost/variant/recursive_variant.hpp>
#include <string>
#include <iostream>
struct A;
struct B;
using C = boost::variant<boost::recursive_wrapper<A>>;
// works:
// using C = boost::variant<std::string, boost::recursive_wrapper<A>>;
struct A {
std::string name;
C variant;
};
struct B {
std::string name;
C variant;
};
int main() {
std::cout << "start" << std::endl;
B hAST; // <--- segfaults
std::cout << "end" << std::endl;
return 0;
}