2
template< typename F > using T = boost::variant< F, F const >;
유형을 만들어 읽기 전용 및 읽기/쓰기 가능한 액세스 가능한 값을 동일한 std::vector<T>
에 저장하려고합니다. 하지만 다음과 같은 프로그래밍 문제가 있습니다.const :: const 및 non-const의 변형 ::
#include <iostream>
#include <cstdlib>
#include <boost/variant.hpp>
int main()
{
using F = double;
using CV = boost::variant< F const, F >;
F const c = 0.0;
CV C(c);
F v = 0.0;
CV V(v);
std::cout << C.which() << ' ' << V.which() << std::endl;
return EXIT_SUCCESS;
}
출력 : 1 1
. F
유형의 값 const
버전을 어떻게 저장할 수 있습니까?
먼저 __why __ ...를 이해하고 해결 방법을 찾아보십시오. 나는 boost :: variant'의 내용을 조금 파고 그것을 호출 한 다른 변형 (즉,'const'와'nonconst')을 초기화하기 위해 그것을 발견했지만'const' 매개 변수에 대해 유효하지 않은 인덱스를 반환합니다. 'index'는 이니셜 라이저 타입의 일부입니다. 버그 (또는 아마도 feature)가 있습니다 ... 그래서 boost :: detail :: variant :: make_initializer_node'를 보시면됩니다. boost/variant/detail/initializer.hpp의 111 행 주위) – zaufi
@ zaufi 나는 시도 할 것이다. 그러나 이해하기가 너무 어려워 보입니다. – Orient
다른 사람들이 작성한 코드를 읽고 이해하는 것은 어쨌든 매우 유용한 기술입니다. 개발할 기회를 활용하십시오! :)) – zaufi