Мне нужна характеристика типа, которая будет сообщать тип параметра функтора operator ()
с учетом типа функтора и типа аргумента, переданного в Это. По сути, мне нужно точно определить, в какой тип будет преобразован аргумент при передаче его в функтор. Для простоты предположим, что меня интересует только (потенциально шаблонный, потенциально перегруженный) operator ()
с одним аргументом. К сожалению, я ограничен c ++ 03. Это можно сделать? Если нет, то как насчет C ++ 11?
Вот один пример:
#include
#include
template
struct parameter_type
{
// what goes here?
typedef ... type;
};
struct takes_float_cref
{
void operator()(const float &);
};
int main()
{
// when calling takes_float_cref::operator() with an int,
// i'd expect a conversion to const float &
assert(std::is_same(parameter_type::type, const float &>::value);
return 0;
}
Связанный с вопрос (ответ на который не дает мне того, что мне нужно) дает контекст, в котором нужна такая черта . Я провел дополнительные модульные тесты на ideone .