에서 변형 기본 유형 I은 S-expression이 모델 재귀 변형이있다. 그러나, 나는 push_back() 방문자의 구현과 붙어있어.변경 부스트 :: 방문자
struct push_back_visitor: public boost::static_visitor<void>
{
push_back_visitor(const sexpr &arg): arg_(arg) {}
template <typename T>
void operator()(const T &value) const {
throw bad_visit();
}
void operator()(nil &val) const {
// how to change the underlying type to list<sexpr> here?
// lst.push_back(arg_);
}
void operator()(list<sexpr> &lst) const {
lst.push_back(arg_);
}
sexpr arg_;
};
모든 아이디어 : 기본 유형 nil
을 때, 나는 그것이 list<sexpr>
에 해당 유형을 변경하고 공급 된 값을 다시 밀어 싶습니다?
정말 컴파일 될까요? 유형 자체를 정의하는 동안'sexpr' 유형을 사용하고 있습니다. –
나는 단지 내 요점을 설명하기 위해 코드를 최소화하려고했습니다. 내가 실제로 가지고있는 것을 보여주기 위해 코드를 편집했습니다. 이것은 여전히 최소화됩니다. sexpr은 기본 재귀 변형 ('node')에 apply_visitor() 요청을 전달하는 node_type에 대한 래퍼로 생각할 수 있습니다. –