Я пытаюсь понять, как я могу получить некоторый код для компиляции, который определит размер возвращаемого значения T, где T - прототип функции, в моем шаблоне функции.
template<typename T>
void functionReturnLength()
{
long lReturnTypeSize = boost::mpl::eval_if<
boost::is_void<boost::function_types::result_type<T>::type>::value,
boost::mpl::long_<0>,
boost::mpl::long_<boost::mpl::sizeof_<boost::function_types::result_type<T>::type>::value>>::value;
}
Однакоон по-прежнему не компилируется, потому что sizeof (void) не является допустимой операцией - хотя я пытаюсь создать оператор if, который будет возвращать размер 0, если тип void.Я довольно новичок в BOOST MPL, поэтому, просматривая документацию в течение некоторого времени, я не уверен, как можно применить другие if, такие как if_ или apply_if, и даже если они будут работать.
Спасибо.