Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22093

Problem in debugging templates. Build fails specifically for Linux GCC 7, GCC 6, GCC 5, GCC 4.9 error: template argument 1 is invalid

$
0
0

My Travis is only failing for Linux GCC 7, GCC 6, GCC 5, GCC 4.9 with error

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);

Here is 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()

which includes and uses 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;                }            };...

It builds perfectly on my machine and I have tried some variation of code but I cannot understand what am I missing that builds are failing specifically for Linux GCC 7, GCC 6, GCC 5, GCC 4.9.

In this project, I have made many headers in a similar fashion but never faced such an issue. I will be grateful for any suggestions.

https://dev.azure.com/lpranam/lpranam/_build/results?buildId=392&view=logs&j=d5b3eaca-5133-5bed-7ece-a6421a4fcca5&t=9b0787b9-d206-5213-01a9-f3ff4bf8b6d6


Viewing all articles
Browse latest Browse all 22093

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>