[boost] result_of<F()>::type is void ... why?