boost.variant를 배우려고합니다. 그러나 책에서 복사 한 코드는 컴파일을 통과하지 못합니다.boost :: variant를 사용한 연산자 재로드에 대한 컴파일 오류
class var_print : public boost::static_visitor<void>
{
public:
template<typename T>
void operator()(T &i) {
i *= 2;
cout<<i<<endl;
}
};
사용 방법은 다음과 같습니다.
ERROR :
typedef boost::variant<int,double,string> var_t;
var_t v(1); //v->int
boost::apply_visitor(var_print(),v);
컴파일러는 다음과 같은 오류가 발생하지 일치를 '연산자 * ='위한
나 퍼즐'나는 = 2 *'를에서는 템플릿 함수 유형을 결정하기 때문에 매개 변수가 호출 될 때마다 호출하고 int는 연산자 * =를 정의해야합니다.
예, 'v'는 정수가 아니며'boost :: variant'입니다. –
@ Joachim 그건 중요하지 않습니다.'v'는 함수 매개 변수가 아닙니다. –