
Christopher Kormanyos <e_float <at> yahoo.com> writes:
* OK for GCC 4.7.2 * Errors for VC10 (ambiguous symbols), AKA VisualStudio 2010 * Errors for VC11 (ambiguous symbols), AKA VisualStudio 2012
Sorry. I've misinterpreted MSVC output. I do see the error now. And... this is really weird one. I did not see something like this in a long time. What it comes to can be illustrated in this example: #include <boost/multiprecision/cpp_dec_float.hpp> namespace boost { struct A{}; namespace inner1 { struct enable_if {}; } // inner namespace inner2 { using namespace ::boost::inner1; template<typename T> void f1( A& ) {} void f2() { f1<int>( A() ); // <=== !!!!!! Offending line } } // inner2 } // boost void foo() { typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> mp_type; const mp_type test_value = mp_type(12) / 7; } I'm sure it can be simplified further by removing specifics of multiprecision library. And the offending line is ... the template instantiation, in unrelated namespace HAS NOTHING TO DO with enable_if at all. Good job MS - I am still trying to figure out how you manage to achieve this "result". Any hints are welcome. Gennadiy