Я хочу определить размер последовательности. Для всех последовательностей в STL я могу использовать функцию-член .size (), но если последовательность является массивом, у меня возникнут проблемы. Как программно определить, является ли последовательность, переданная в качестве аргумента, типом массива или типом последовательности STL.
например.
template<typename sequence>
size_t find_size(sequence& s)
{
// if s has .size() member function
// return s.size()
//else if it is an array type
// return sizeof(s)
//else throw error
}
По сути, я ищу функцию размера, не являющегося членом, точно так же, как у нас есть нечлены begin () и end () в C ++ 11
PS: под последовательностью я подразумеваю последовательность, определенную в STL (все они имеют функцию-член .size ()), включая массивы в качестве аргумента.