Christopher Kormanyos 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
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::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