Какую сигнатуру типа мне нужно использовать, если я хочу определить тип, возвращаемый оператором индекса (массива) с использованием boost? Обратите внимание, что массивы, для которых я буду использовать это, не содержат typedefs и являются сторонними.
Пример. Я хочу определить, что:
SomeArray<int> tmp(1);
int& somevalue = tmp[0]; //would equate
typename subscript_result<SomeArray<int> >::type somevalue = tmp[0];
Что-то вроде
template<class T>
struct subscript_result
{
typedef boost::result_of<T::operator[](typename T::difference_type)>::type type;
};
? У меня всегда были проблемы с оператором [] в типовых сигнатурах. : |
Спасибо!