Log message:
cad/librecad: Requires C++14.
Here is a sampling of errors when I try to build it without C++14:
--- ../../generated/librecad/obj/rs_ellipse.o ---
In file included from \
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/m \
ath/tools/roots.hpp:14,
from lib/engine/rs_ellipse.cpp:49:
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/config.hpp:28:6: \
warning: #warning "Boost.Math requires C++14" [-Wcpp]
28 | # warning "Boost.Math requires C++14"
| ^~~~~~~
...
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/type_traits.hpp:208:12: \
error: 'is_final' has not been declared in 'std'
208 | using std::is_final;
| ^~~~~~~~
...
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/type_traits.hpp:315:34: \
warning: variable templates only available with '-std=c++14' or '-std=gnu++14'
315 | BOOST_MATH_INLINE_CONSTEXPR bool is_void_v = \
boost::math::is_void<T>::value;
| ^~~~~~~~~
...
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/special_functions/pow.hpp:126:79: \
error: redeclaration 'constexpr typename \
boost::math::tools::promote_args<T2>::type boost::math::pow(T, const \
Policy&)' differs in 'constexpr' from previous declaration
126 | BOOST_MATH_GPU_ENABLED constexpr inline typename \
tools::promote_args<T>::type pow(T base, const Policy& policy)
| \
^~~
In file included from \
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/m \
ath/special_functions/sign.hpp:20,
from \
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/m \
ath/tools/roots.hpp:20,
from lib/engine/rs_ellipse.cpp:49:
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/special_functions/math_fwd.hpp:1173:79: \
note: previous declaration 'boost::math::tools::promote_args_t<T> \
boost::math::pow(T, const Policy&)'
1173 | BOOST_MATH_GPU_ENABLED BOOST_MATH_CXX14_CONSTEXPR \
tools::promote_args_t<T> pow(T base, const Policy& policy);
| \
^~~
...
In file included from \
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/m \
ath/special_functions/math_fwd.hpp:28,
from \
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/m \
ath/special_functions/sign.hpp:20,
from \
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/m \
ath/tools/roots.hpp:20,
from lib/engine/rs_ellipse.cpp:49:
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/promotion.hpp: \
In instantiation of 'struct \
boost::math::tools::promote_args_permissive<double, double>':
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/promotion.hpp:119:16: \
required from 'struct boost::math::tools::promote_args<double, double>'
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/promotion.hpp:129:13: \
required by substitution of 'template<class ... Args> using \
promote_args_t = typename boost::math::tools::promote_args::type [with Args = \
{double, double}]'
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/special_functions/next.hpp:737:42: \
required by substitution of 'template<class T, class U> \
boost::math::tools::promote_args_t<RT1, RT2> \
boost::math::float_distance(const T&, const U&) [with T = double; U = \
double]'
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/roots.hpp:677:39: \
required from 'T boost::math::tools::detail::second_order_root_finder(F, T, T, \
T, int, uintmax_t&) [with Stepper = boost::math::tools::detail::halley_step; \
F = {anonymous}::EllipseDistanceFunctor; T = double; uintmax_t = long unsigned \
int]'
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/roots.hpp:755:64: \
required from 'T boost::math::tools::halley_iterate(F, T, T, T, int, \
uintmax_t&) [with F = {anonymous}::EllipseDistanceFunctor; T = double; \
uintmax_t = long unsigned int]'
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/roots.hpp:762:25: \
required from 'T boost::math::tools::halley_iterate(F, T, T, T, int) [with F = \
{anonymous}::EllipseDistanceFunctor; T = double]'
lib/engine/rs_ellipse.cpp:139:23: required from here
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/promotion.hpp:105:16: \
error: no type named 'type' in 'struct \
boost::math::tools::pa2_integral_already_removed<double, double, true>'
105 | using type = typename pa2_integral_already_removed<
| ^~~~
...
In file included from lib/engine/rs_ellipse.cpp:49:
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/roots.hpp: \
In instantiation of 'T boost::math::tools::detail::second_order_root_finder(F, \
T, T, T, int, uintmax_t&) [with Stepper = \
boost::math::tools::detail::halley_step; F = \
{anonymous}::EllipseDistanceFunctor; T = double; uintmax_t = long unsigned \
int]':
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/roots.hpp:755:64: \
required from 'T boost::math::tools::halley_iterate(F, T, T, T, int, \
uintmax_t&) [with F = {anonymous}::EllipseDistanceFunctor; T = double; \
uintmax_t = long unsigned int]'
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/roots.hpp:762:25: \
required from 'T boost::math::tools::halley_iterate(F, T, T, T, int) [with F = \
{anonymous}::EllipseDistanceFunctor; T = double]'
lib/engine/rs_ellipse.cpp:139:23: required from here
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/roots.hpp:677:39: \
error: no matching function for call to 'float_distance(double&, \
double&)'
677 | if (fabs(float_distance(min, max)) < 2)
| ~~~~~~~~~~~~~~^~~~~~~~~~
In file included from \
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/m \
ath/tools/roots.hpp:25,
from lib/engine/rs_ellipse.cpp:49:
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/special_functions/next.hpp:703:49: \
note: candidate: 'template<class T, class U, class Policy> \
boost::math::tools::promote_args_t<RT1, RT2> \
boost::math::float_distance(const T&, const U&, const Policy&)'
703 | inline typename tools::promote_args<T, U>::type \
float_distance(const T& a, const U& b, const Policy& pol)
| ^~~~~~~~~~~~~~
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/special_functions/next.hpp:703:49: \
note: template argument deduction/substitution failed:
In file included from lib/engine/rs_ellipse.cpp:49:
/home/riastradh/pkgsrc/current/work/cad/librecad/work/.buildlink/include/boost/math/tools/roots.hpp:677:39: \
note: candidate expects 3 arguments, 2 provided
677 | if (fabs(float_distance(min, max)) < 2)
| ~~~~~~~~~~~~~~^~~~~~~~~~
|