我有这样一段代码
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 向我展示了很多错误,例如“错误:'' 和 'int' 类型的无效操作数到二进制 'operator<' p.set<1>(col.a());” 所以它只是尝试“比较”p.set
和1
boost 类确实有模板函数集,但编译器不将其用作函数。
如果我直接从 boost 类型制作 typedef,就像typedef bg::model::point<double, 5, bg::cs::cartesian> point;
一切正常。
我只想根据模板参数选择不同的尺寸highDimension
。但现在我不知道如何强迫 GCC 理解我:)