약간의 데이터 유형을 구축하기 시작했습니다. 현재 단계에서는 부스트 변형에서 단 하나의 재귀 유형 만 있습니다. 내 유형을 인스턴스화하려고하면 세그 폴트가 발생합니다. 재귀 적 유형 앞에 문자열을두면 작동하지 않고 유형 뒤에 넣습니다. gcc 4.8.1 64 비트 및 1.54 향상 mingw 사용하고 있습니다.Segfault with boost variant
부스트 변형을 잘못 사용하고 있습니까? - recursive_wrapper<A>
입니다 - 기본 C
의 기본 생성자는 첫 번째 템플릿 매개 변수의 기본 건설 한 값 자체를 초기화해야합니다 :
#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;
}
스택 오버플로 :-)가 무엇입니까? –