[enable_if] Compiler workaround for constructor overloads

Hello I'm working with a Codewarrior compiler (Nokia Codewarrior C/C++ Compiler for Windows/x86 version 3.2.3 build 451). The following test code finds the proper overload for MSVC 2005 and doesn't for the Codewarrior compiler but only with the = syntax. Does anyone have any idea how to make "c" find its overload as well? It would make the client code a lot cleaner to read/write. #include <boost/type_traits/is_integral.hpp> #include <boost/utility/enable_if.hpp> struct tester { int value; tester( float f ) : value((int)f) { } tester( double d ) : value((int)d) { } template< typename T > tester( T val, typename boost::enable_if< boost::is_integral<T> >::type* = 0 ) : value(val) { zzz } }; void main() { tester a = 1.f; // works (chooses float overload) tester b(1); // works (i.e. error on zzz) tester c = 1; // works on vc2005 (i.e. error on zzz) // fails on cw (ambiguous overload looking at float and double) }
participants (1)
-
Michael Marcin