나는 코드와 같은 조각C++ 조건 템플릿 유형
namespace bg = boost::geometry;
typedef typename std::conditional<highDimension,
typename bg::model::point<double, 6, bg::cs::cartesian>,
typename bg::model::point<double, 5, bg::cs::cartesian>>::type point;
..........
point p;
p.set<0>(0);
p.set<1>(0);
p.set<2>(0);
..........
는 GCC가 나에게 오류 "와 같은 오류를 많이 보여이 : 운영자 < '바이너리'유형의 유효하지 않은 피연산자 ''과 '지능 ' p.set < 1> (col.a()); " 그래서 그냥 '비교'하려고합니다 p.set
및 1
부스트 클래스는 실제로 템플릿 함수 세트를 가지고 있지만 컴파일러는 함수로 사용하지 않습니다.
부스트 유형에서 직접 typedef를 만들면 typedef bg::model::point<double, 5, bg::cs::cartesian> point;
과 같이 모든 것이 잘 동작합니다.
템플릿 인수 highDimension
에 따라 다른 크기 크기를 선택하고 싶습니다. 당신이 이유에
p.template set<0>(0);
을 :하지만 지금은 GCC가 highDimension
이후
대단히 감사합니다. 예상대로 작동합니다. – johngull
+1 C++ 11 유형 별칭의 경우. 오래된'typedef'보다 수천 번 더 읽기 쉽습니다. – Manu343726
이 'p 템플릿 설명 <0> (0);에 대해 읽을 수있는 곳을 가르쳐 주시겠습니까? 건설 – johngull