Мой Трэвис не работает только для Linux G CC 7, G CC 6, G CC 5, G CC 4.9 с ошибкой
libs/astronomy/test/coordinate/equatorial_coord.cpp:22:57: error: template argument 1 is invalid
RightAscension<double, quantity<bud::plane_angle>>
^
libs/astronomy/test/coordinate/equatorial_coord.cpp:23:39: error: template argument 2 is invalid
ra(25.0 * bud::degrees);
Здесь - это equatorial_cord. cpp
#define BOOST_TEST_MODULE equatorial_coord_test
#include <iostream>
#include <boost/units/io.hpp>
#include <boost/units/quantity.hpp>
#include <boost/units/systems/angle/degrees.hpp>
#include <boost/units/systems/si/plane_angle.hpp>
#include <boost/astronomy/coordinate/coord_sys/equatorial_coord.hpp>
#include <boost/test/unit_test.hpp>
using namespace boost::astronomy::coordinate;
using namespace boost::units;
using namespace boost::units::si;
namespace bud = boost::units::degree;
namespace bu = boost::units;
BOOST_AUTO_TEST_SUITE(angle)
BOOST_AUTO_TEST_CASE(right_ascension) {
//Create object of Right Ascension
RightAscension<double, quantity<bud::plane_angle>>
ra(25.0 * bud::degrees);
//Check value
BOOST_CHECK_CLOSE(ra.get_angle().value(), 25.0, 0.001);
//Quantity stored as expected?
BOOST_TEST((std::is_same<decltype(ra.get_angle()), quantity<bud::plane_angle>>::value));
}
BOOST_AUTO_TEST_SUITE_END()
, который включает и использует Equatorial_coord.hpp
#include <iostream>
#include <boost/units/io.hpp>
#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/units/systems/angle/degrees.hpp>
#include <boost/units/systems/si/plane_angle.hpp>
#include <boost/astronomy/coordinate/coord_sys/coord_sys.hpp>
namespace boost {
namespace astronomy {
namespace coordinate {
namespace bu = boost::units;
namespace bg = boost::geometry;
namespace bud = boost::units::degree;
//Right Ascension
template
<
typename CoordinateType = double,
typename RightAscensionQuantity = bu::quantity<bu::si::plane_angle, CoordinateType>
>
struct RightAscension {
private:
RightAscensionQuantity ra;
public:
RightAscension(){
ra = 0.0 * bu::si::radian;
};
RightAscension(RightAscensionQuantity const& _ra) : ra(_ra) {}
RightAscensionQuantity get_angle() const{
return static_cast<RightAscensionQuantity>(ra);
}
void print() {
std::cout << "Right Ascension: " << ra;
}
};
...
Он отлично работает на моей машине, и я пробовал некоторые варианты кода, но я не могу понять, что мне не хватает, что сборки не работают специально для Linux G CC 7, G CC 6, G CC 5, G CC 4.9.
В этом проекте я сделал много заголовков аналогичным образом, но никогда не сталкивался с такой проблемой. Буду признателен за любые предложения.
https://dev.azure.com/lpranam/lpranam/_build/results?buildId=392&view=logs&j=d5b3eaca-5133-5bed-7ece-a6421a4fcca5&t=9b0787b9-d206-5213-01a9-f3ff4bf8b6d6