The source program: #include #include #include const int values[] = { 1,2,3,4,5 }; const int NVALS = sizeof values / sizeof (int); int main() { using namespace std; typedef map valmap; valmap m; for (int i = 0; i < NVALS; i++) m.insert(make_pair(values[i], pow(values[i], .5))); valmap::iterator it = 100; // error valmap::iterator it2(100); // error m.insert(1,2); // error return 0; } First, an unfiltered run using MSVC 71 ("Everett"): d:\src\cl\demo>cl2 rtmap.cpp Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.2215.1 for 80x86 Copyright (C) Microsoft Corporation 1984-2002. All rights reserved. rtmap.cpp rtmap.cpp(17) : error C2666: 'pow' : 7 overloads have similar conversions E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(620): could be ' long double pow(long double,int)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(618): or ' long double pow(long double,long double)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(572): or ' float pow(float,int)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(570): or ' float pow(float,float)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(534): or ' double pow(int,int)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(532): or ' double pow(double,int)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(195): or ' double pow(double,double)' while trying to match the argument list '(const int, double)' rtmap.cpp(19) : error C2440: 'initializing' : cannot convert from 'int' to 'std: :_Tree<_Traits>::iterator' with [ _Traits=std::_Tmap_traits,std::allocator>,false> ] No constructor could take the source type, or constructor overload resol ution was ambiguous rtmap.cpp(20) : error C2664: 'std::_Tree<_Traits>::iterator::iterator(std::_Tree <_Traits>::_Nodeptr)' : cannot convert parameter 1 from 'int' to 'std::_Tree<_Tr aits>::_Nodeptr' with [ _Traits=std::_Tmap_traits,std::allocator>,false> ] and [ _Traits=std::_Tmap_traits,std::allocator>,false> ] Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast And a filtered run with the MSVC7 Proxy CL (after set CL=-GX -WL): d:\src\cl\demo>cl rtmap.cpp ****** {BD Software Proxy CL v2.29} STL Message Decryption is ON! ****** Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.2215.1 for 80x86 Copyright (C) Microsoft Corporation 1984-2002. All rights reserved. rtmap.cpp rtmap.cpp(17): error C2666: 'pow': 7 overloads have similar conversions E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(620): could be 'long double pow(long double,int)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(618): or 'long double pow(long double,long double)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(572): or 'float pow(float,int)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(570): or 'float pow(float,float)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(534): or 'double pow(int,int)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(532): or 'double pow(double,int)' E:\Microsoft Visual Studio .NET 2003\Vc7\include\math.h(195): or 'double pow(double,double)' while trying to match the argument list '(const int, double)' rtmap.cpp(19): error C2440: 'initializing': cannot convert from 'int' to 'map::iter' No constructor could take the source type, or constructor overload resolution was ambiguous rtmap.cpp(20): error C2664: 'map::iter(map::iter)': cannot convert parameter 1 from 'int' to 'map::iter' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast [Note: demo runs were performed in an 80-column console window with STLFilt's intelligent line wrapping enabled. Wider consoles yield even better results]