Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-01-09 13:28:17


"Peter Dimov" <pdimov_at_[hidden]> writes:

> From: "Derek Ross" <dross_at_[hidden]>
>> Hello,
>>
>> I'd like to convert this run-time assertion to a compile time MPL check:
>>
>> template <class T>
>> bool SetOption(COptionInfo& o, const char* key, const T& value)
>> {
>> assert( typeid(T)==typeid(bool)
>> || typeid(T)==typeid(int)
>> || typeid(T)==typeid(double)
>> || typeid(T)==typeid(string));
>> ...etc...
>>
>> As you can probably guess, this is a template function that should only
>> be called with types of int, bool, std::string or double.
>
> This would make a nice "MPL Hello World" example.

Except that it's an example of how to prevent something from
happening, I agree ;-)

    typedef mpl::vector<bool,int,double,string> legal_types;
    BOOST_STATIC_ASSERT((mpl::contains<legal_types,T>::value));

-Dave

-- 
                       David Abrahams
   dave_at_[hidden] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk