
John Maddock writes:
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 can (2) if users already defined them for themselves -- which is quite likely; I know that we did.
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.
If we did, it would be a lie.
What does anyone else think? Note that the dependency on <string> would be for broken compilers *only*.
5. Provide a standalone type_traits header defining necessary/possible specializations for the standard library's types and include it as required in the corresponding program_options' tests/examples. Users can use or ignore this header at their will. -- Aleksey Gurtovoy MetaCommunications Engineering