Boost logo

Boost :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2005-06-06 03:13:35

I get program_options failures on VC 7.0 that result from the following
sequences of events:

   variable_map::as<string> is called
   any_cast<string&> is called
   the following code in any.hpp gives static assertion:

     typedef BOOST_DEDUCED_TYPENAME remove_reference<ValueType>::type

        // If 'nonref' is still reference type, it means the user has not
        // specialized 'remove_reference'.

        // to generate specialization of remove_reference for your class
        // See type traits library documentation for details

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?

- Volodya

Boost list run by bdawes at, gregod at, cpdaniel at, john at