$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Rozental, Gennadiy (gennadiy.rozental_at_[hidden])
Date: 2003-01-27 14:06:18
> Would there be a way to use the MPL so that I could avoid
> #define'ed macros for creating these functions?
You don't need MPL to do so.
==========================================================
> 
> 
> #define MAKE_CHECK_TYPE_FUNCTION(the_type, the_string)\
> bool check_type(const string& str, const the_type& value)\
> {\
> 	if(str != the_string)\
> 	{\
> 		cout << " Wrong type=[" << str << "] T=" << 
> typeid(value).name() << endl;\
> 		return false;\
> 	}\
> 	return true;\
> }
> 
> MAKE_CHECK_TYPE_FUNCTION(bool, 		"b")
> MAKE_CHECK_TYPE_FUNCTION(double, 	"f")
> MAKE_CHECK_TYPE_FUNCTION(int, 		"i")
> MAKE_CHECK_TYPE_FUNCTION(string, 	"s")
> 
> ==========================================================
template<typename T>
check_type_func_traits;
template<>
check_type_func_traits<bool> { static std::string type_id = "b" }; //
depends on compiler may require extrnal definition also
template<>
check_type_func_traits<double> { static std::string type_id = "f" };
....
template<typename T>
bool check_type(std::string const& str, const T const& value)
{
  if( str != check_type_func_traits<T>::type_id )
  {
    cout << " Wrong type=[" << str << "] T=" 
           << typeid(value).name() << endl;
    return false;
  }
  return true;
}
Regards, 
You may use some different kind of compile time mapping. But this should
work for you.
Gennadiy.