From: "Derek Ross" <[EMAIL PROTECTED]>
> 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.

Here is one non-MPL low tech old fashioned C++ solution.

inline void assertSetOption(bool const *) {}
inline void assertSetOption(int const *) {}
inline void assertSetOption(double const *) {}
inline void assertSetOption(string const *) {}

template <class T>
bool SetOption(COptionInfo& o, const char* key, const T& value)
{
    assertSetOption(&value);
// ...
}

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to