In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:12:0, from /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:9, from bug.cc:5: /usr/local/include/boost/multiprecision/number.hpp: In instantiation of 'boost::multiprecision::number::number(const V&, typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type*) [with V = float; Backend = boost::multiprecision::backends::cpp_bin_float<24u, (boost::multiprecision::backends::digit_base_type)2u, void, short int, -126, 127>; boost::multiprecision::expression_template_option ExpressionTemplates = (boost::multiprecision::expression_template_option)0u; typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type = void]': /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'static constexpr T boost::math::constants::detail::constant_pi::get(mpl_::int_<1>) [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; Policy = boost::math::policies::policy; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' bug.cc:17:48: required from here /usr/local/include/boost/multiprecision/number.hpp:52:17: error: no match for 'operator=' (operand types are 'boost::multiprecision::backends::cpp_bin_float<24u, (boost::multiprecision::backends::digit_base_type)2u, void, short int, -126, 127>' and 'boost::disable_if_c::type {aka double}') m_backend = canonical_value(v); ^ In file included from bug.cc:5:0: /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:107:19: note: candidate: boost::multiprecision::backends::cpp_bin_float& boost::multiprecision::backends::cpp_bin_float::operator=(const boost::multiprecision::backends::cpp_bin_float&) [with unsigned int Digits = 24u; boost::multiprecision::backends::digit_base_type DigitBase = (boost::multiprecision::backends::digit_base_type)2u; Allocator = void; Exponent = short int; Exponent MinExponent = -126; Exponent MaxExponent = 127] cpp_bin_float& operator=(const cpp_bin_float &o) BOOST_NOEXCEPT_IF(noexcept(std::declval() = std::declval())) ^ /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:107:19: note: no known conversion for argument 1 from 'boost::disable_if_c::type {aka double}' to 'const boost::multiprecision::backends::cpp_bin_float<24u, (boost::multiprecision::backends::digit_base_type)2u, void, short int, -126, 127>&' /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:116:19: note: candidate: template boost::multiprecision::backends::cpp_bin_float& boost::multiprecision::backends::cpp_bin_float::operator=(const boost::multiprecision::backends::cpp_bin_float&) [with unsigned int D = D; boost::multiprecision::backends::digit_base_type B = B; A = A; E = E; E MinE = MinE; E MaxE = MaxE; unsigned int Digits = 24u; boost::multiprecision::backends::digit_base_type DigitBase = (boost::multiprecision::backends::digit_base_type)2u; Allocator = void; Exponent = short int; Exponent MinExponent = -126; Exponent MaxExponent = 127] cpp_bin_float& operator=(const cpp_bin_float &o) ^ /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:116:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/multiprecision/cpp_int.hpp:12:0, from /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:9, from bug.cc:5: /usr/local/include/boost/multiprecision/number.hpp:52:17: note: mismatched types 'const boost::multiprecision::backends::cpp_bin_float' and 'boost::disable_if_c::type {aka double}' m_backend = canonical_value(v); ^ In file included from bug.cc:5:0: /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:129:74: note: candidate: template typename boost::enable_if_c<(((boost::multiprecision::number_category::value == number_kind_floating_point) && (std::numeric_limits::digits <= (int)(boost::multiprecision::backends::cpp_bin_float::bit_count))) && (std::numeric_limits::radix == 2)), boost::multiprecision::backends::cpp_bin_float&>::type boost::multiprecision::backends::cpp_bin_float::operator=(const Float&) [with Float = Float; unsigned int Digits = 24u; boost::multiprecision::backends::digit_base_type DigitBase = (boost::multiprecision::backends::digit_base_type)2u; Allocator = void; Exponent = short int; Exponent MinExponent = -126; Exponent MaxExponent = 127] && (std::numeric_limits::radix == 2), cpp_bin_float&>::type operator=(const Float& f) ^ /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:129:74: note: template argument deduction/substitution failed: /usr/local/include/boost/multiprecision/cpp_bin_float.hpp: In substitution of 'template typename boost::enable_if_c<(((boost::multiprecision::number_category::value == number_kind_floating_point) && (std::numeric_limits::digits <= (int)(boost::multiprecision::backends::cpp_bin_float::bit_count))) && (std::numeric_limits::radix == 2)), boost::multiprecision::backends::cpp_bin_float&>::type boost::multiprecision::backends::cpp_bin_float::operator=(const Float&) [with Float = double]': /usr/local/include/boost/multiprecision/number.hpp:52:17: required from 'boost::multiprecision::number::number(const V&, typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type*) [with V = float; Backend = boost::multiprecision::backends::cpp_bin_float<24u, (boost::multiprecision::backends::digit_base_type)2u, void, short int, -126, 127>; boost::multiprecision::expression_template_option ExpressionTemplates = (boost::multiprecision::expression_template_option)0u; typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type = void]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'static constexpr T boost::math::constants::detail::constant_pi::get(mpl_::int_<1>) [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; Policy = boost::math::policies::policy; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' bug.cc:17:48: required from here /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:129:74: error: no type named 'type' in 'struct boost::enable_if_c&>' /usr/local/include/boost/multiprecision/number.hpp: In instantiation of 'boost::multiprecision::number::number(const V&, typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type*) [with V = float; Backend = boost::multiprecision::backends::cpp_bin_float<24u, (boost::multiprecision::backends::digit_base_type)2u, void, short int, -126, 127>; boost::multiprecision::expression_template_option ExpressionTemplates = (boost::multiprecision::expression_template_option)0u; typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type = void]': /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'static constexpr T boost::math::constants::detail::constant_pi::get(mpl_::int_<1>) [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; Policy = boost::math::policies::policy; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' bug.cc:17:48: required from here /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:271:68: note: candidate: template typename boost::enable_if, boost::multiprecision::backends::cpp_bin_float&>::type boost::multiprecision::backends::cpp_bin_float::operator=(const I&) [with I = I; unsigned int Digits = 24u; boost::multiprecision::backends::digit_base_type DigitBase = (boost::multiprecision::backends::digit_base_type)2u; Allocator = void; Exponent = short int; Exponent MinExponent = -126; Exponent MaxExponent = 127] typename boost::enable_if, cpp_bin_float&>::type operator=(const I& i) ^ /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:271:68: note: template argument deduction/substitution failed: /usr/local/include/boost/multiprecision/cpp_bin_float.hpp: In substitution of 'template typename boost::enable_if, boost::multiprecision::backends::cpp_bin_float&>::type boost::multiprecision::backends::cpp_bin_float::operator=(const I&) [with I = double]': /usr/local/include/boost/multiprecision/number.hpp:52:17: required from 'boost::multiprecision::number::number(const V&, typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type*) [with V = float; Backend = boost::multiprecision::backends::cpp_bin_float<24u, (boost::multiprecision::backends::digit_base_type)2u, void, short int, -126, 127>; boost::multiprecision::expression_template_option ExpressionTemplates = (boost::multiprecision::expression_template_option)0u; typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type = void]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'static constexpr T boost::math::constants::detail::constant_pi::get(mpl_::int_<1>) [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; Policy = boost::math::policies::policy; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' bug.cc:17:48: required from here /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:271:68: error: no type named 'type' in 'struct boost::enable_if, boost::multiprecision::backends::cpp_bin_float<24u, (boost::multiprecision::backends::digit_base_type)2u, void, short int, -126, 127>&>' In file included from /usr/local/include/boost/multiprecision/cpp_bin_float.hpp:1422:0, from bug.cc:5: /usr/local/include/boost/multiprecision/number.hpp: In instantiation of 'boost::multiprecision::number::number(const V&, typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type*) [with V = float; Backend = boost::multiprecision::backends::cpp_bin_float<24u, (boost::multiprecision::backends::digit_base_type)2u, void, short int, -126, 127>; boost::multiprecision::expression_template_option ExpressionTemplates = (boost::multiprecision::expression_template_option)0u; typename boost::enable_if_c<((((boost::is_arithmetic::value || boost::is_same, V>::value) || boost::is_convertible::value) && (! boost::is_convertible::type, Backend>::value)) && (! boost::multiprecision::detail::is_restricted_conversion::type, Backend>::value))>::type = void]': /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'static constexpr T boost::math::constants::detail::constant_pi::get(mpl_::int_<1>) [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; Policy = boost::math::policies::policy; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' /usr/local/include/boost/math/constants/constants.hpp:289:3: required from 'constexpr typename boost::math::constants::detail::constant_return::type boost::math::constants::pi() [with T = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>; typename boost::math::constants::detail::constant_return::type = boost::multiprecision::number, (boost::multiprecision::expression_template_option)0u>]' bug.cc:17:48: required from here /usr/local/include/boost/multiprecision/cpp_bin_float/io.hpp:167:68: note: candidate: boost::multiprecision::backends::cpp_bin_float& boost::multiprecision::backends::cpp_bin_float::operator=(const char*) [with unsigned int Digits = 24u; boost::multiprecision::backends::digit_base_type DigitBase = (boost::multiprecision::backends::digit_base_type)2u; Allocator = void; Exponent = short int; Exponent MinExponent = -126; Exponent MaxExponent = 127] cpp_bin_float& cpp_bin_float::operator=(const char *s) ^ /usr/local/include/boost/multiprecision/cpp_bin_float/io.hpp:167:68: note: no known conversion for argument 1 from 'boost::disable_if_c::type {aka double}' to 'const char*'