It sounds like it would work, however without seeing the code I can't tell for sure. As you're a VC++ user perhaps download mingw (gcc for windows) and give it a whirl. If something compiles on VC++2005 or later and gcc 3.3 or later I'm usually happy it's standard code.
Just to satisfy my curiosity...
Is there a reason you don't want a default constructor? I assume it's something like you're using someone else's type and you've got the .h but not the .cpp.
Have you considered not deriving from a map but containing and forwarding instead? That will work on every compiler I know. You won't be able to do this if you've got existing code that wants a map but you avoid the whole "STL collections aren't meant to be derived from" panic that wells up in the souls of most experienced C++ programmers.
Anyway, I'm not sure that the weak advice of "try it on another compiler" is really a solution but it's a good way forward.
Cheers,
Ash
PS: If you can get hold of a compiler that uses the Edison Group's front end (
http://www.edg.com/[
^]) and it compiles on that you'll know it's standard compliant. Unfortunately all the compilers based on that I know of (Intel and Comeau) you have to pay for.
PPS: VC++2010 Intellisense uses EDG's front end. If you download VC++2010 express, stick your code in and see if you get any red wiggly lines under any part of the code. If you don't you're
probably going to be okay. It's a good check anyway.