id summary reporter owner description type status milestone component version severity resolution keywords cc 11922 Rev f4a61d breaks introduces ambiguity. layus John Maddock "The following code used to work before 1.60. {{{ #include #include typedef boost::multiprecision::cpp_int mp_int; class Int { public: Int(const mp_int& i) {}; Int(const Int& i) = delete; }; int main() { mp_int i(10); std::shared_ptr p = std::make_shared(i + 10); return 0; } }}} But the changes introduced by the following commit, merged into boost-1.60.0, breaks it. The compiler cannot pick the constructor because there is some ambiguity. (i.e. ""call of overloaded ‘Int(...)’ is ambiguous"") {{{ commit f4a61d5f47c4b03e2c0d3f2bed55fe8f7bb07620 Author: jzmaddock Date: Thu Mar 12 17:55:13 2015 +0000 Add explicit conversion operators and tests to expression templates. }}} I must admit I am not even sure why there is ambiguity, but since the only way to call Int(const Int&) is to call Int(const mp_int&) first to get an Int there should be no ambiguity for the compiler here. " Bugs closed To Be Determined multiprecision Boost 1.60.0 Regression fixed jzmaddock