
The problem is that on VC 7.0 specializations for remove_reference must be defined explicitly, and it's not done for string and wstring.
I see three choices:
1. Declare specialization for string and wstring in program_options 2. Declare them somewhere in type_traits 3. Mark 7.0 as unsupported. 4. Don't use any_cast to reference type
I don't like (4) because I've introduced cast to reference myself explicitly for program_options sake. (1) can lead to conflicts with user code. So it leaves (2) and (3). Any opinions which one is better?
I'm sympathetic towards (2), but it means making type_traits depend upon <string> and all that brings in (I've just checked and the header doesn't pull <string> in at present). It seems a shame to make VC7 unsupported, just for the lack of an include however. What does anyone else think? Note that the dependency on <string> would be for broken compilers *only*. John.