   error in vc++ 6.0
  i have written this program from the msdn site/ map_map.cpp// compile with: /EHsc#include <map>#include <iostream>#include <iterator>int main( ){   using namespace std;   typedef pair <int, int> Int_Pair;   map <int, int>::iterator m1_Iter, m3_Iter, m4_Iter, m5_Iter, m6_Iter;   map <int, int, greater<int> >::iterator m2_Iter;   // Create an empty map m0 of key type integer   map <int, int> m0;   // Create an empty map m1 with the key comparison   // function of less than, then insert 4 elements   map <int, int, less<int> > m1;   m1.insert( Int_Pair( 1, 10 ) );   m1.insert( Int_Pair( 2, 20 ) );   m1.insert( Int_Pair( 3, 30 ) );   m1.insert( Int_Pair( 4, 40 ) );   // Create an empty map m2 with the key comparison   // function of geater than, then insert 2 elements   map <int, int, greater<int> > m2;   m2.insert( Int_Pair( 1, 10 ) );   m2.insert( Int_Pair( 2, 20 ) );   // Create a map m3 with the    // allocator of map m1   map <int, int>::allocator_type m1_Alloc;   m1_Alloc = m1.get_allocator( );   map <int, int> m3( less<int>( ), m1_Alloc );   m3.insert( Int_Pair( 3, 30 ) );   // Create a copy, map m4, of map m1   map <int, int> m4( m1 );   // Create a map m5 by copying the range m1[_First, _Last)   map <int, int>::const_iterator m1_bcIter, m1_ecIter;   m1_bcIter = m1.begin( );   m1_ecIter = m1.begin( );   m1_ecIter++;   m1_ecIter++;   map <int, int> m5(m1_bcIter, m1_ecIter);   // Create a map m6 by copying the range m4[_First, _Last)   // and with the allocator of map m2   map <int, int>::allocator_type m2_Alloc;   m2_Alloc = m2.get_allocator( );   map <int, int> m6( m4.begin( ), ++m4.begin( ), less<int>( ), m2_Alloc);   cout << "m1 =";   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ ) cout << " " << m1_Iter -> second;   cout << endl; cout << "m2 =";   for ( m2_Iter = m2.begin( ); m2_Iter != m2.end( ); m2_Iter++ ) cout << " " << m2_Iter -> second;   cout << endl;   cout << "m3 =";   for ( m3_Iter = m3.begin( ); m3_Iter != m3.end( ); m3_Iter++ ) cout << " " << m3_Iter -> second;   cout << endl;   cout << "m4 =";   for ( m4_Iter = m4.begin( ); m4_Iter != m4.end( ); m4_Iter++ ) cout << " " << m4_Iter -> second;   cout << endl;   cout << "m5 =";   for ( m5_Iter = m5.begin( ); m5_Iter != m5.end( ); m5_Iter++ ) cout << " " << m5_Iter -> second;   cout << endl;   cout << "m6 =";   for ( m6_Iter = m6.begin( ); m6_Iter != m6.end( ); m6_Iter++ ) cout << " " << m6_Iter -> second;   cout << endl;return 0;}when i compile this program i get the followin errorsC:\Documents and Settings\simmi\Desktop\examples\maps\constructor.cpp(47) : error C2664: '__thiscall std::map<int,int,struct std::less<int>,class std::allocator<int> >::std::map<int,int,struct std::less<int>,class std::allocator<int> >(const struct std::less<int> &,const class std::allocator<int> &)' : cannot convert parameter 1 from 'class std::_Tree<int,struct std::pair<int const ,int>,struct std::map<int,int,struct std::less<int>,class std::allocator<int> >::_Kfn,struct std::less<int>,class std::allocator<int> >::const_iterator' to 'const struct std::less<int> &'   Reason: cannot convert from 'class std::_Tree<int,struct std::pair<int const ,int>,struct std::map<int,int,struct std::less<int>,class std::allocator<int> >::_Kfn,struct std::less<int>,class std::allocator<int> >::const_iterator' to 'const struct std::less<int>'   No constructor could take the source type, or constructor overload resolution was ambiguousC:\Documents and Settings\simmi\Desktop\examples\maps\constructor.cpp(53) : error C2664: '__thiscall std::map<int,int,struct std::less<int>,class std::allocator<int> >::std::map<int,int,struct std::less<int>,class std::allocator<int> >(const struct std::pair<int const ,int> *,const struct std::pair<int const ,int> *,const struct std::less<int> &,const class std::allocator<int> &)' : cannot convert parameter 1 from 'class std::_Tree<int,struct std::pair<int const ,int>,struct std::map<int,int,struct std::less<int>,class std::allocator<int> >::_Kfn,struct std::less<int>,class std::allocator<int> >::iterator' to 'const struct std::pair<int const ,int> *'   No user-defined-conversion operator available that can perform this conversion, or the operator cannot be calledError executing cl.exe.constructor.obj - 2 error(s), 0 warning(s)but this program works fine on dev c++can anyone help me with this problem   
  Visual Studio 6.0 is from 1998 and is completely broken.  There is no good reason to continue using it now that the express versions of VS2005 are free.  If you need to compile with VS use those.   ;  thankzz !!   ;  Seconded. It's particularly bad at template and STL support and I wouldn't be at all surprised if that's your problem.Link to VC2005 with installation instructions. You'll need VC2005 and the Platform SDK for C++ development.   