Всем доброго времени.
Например, есть задача получить размер любого контейнера в байтах.
Условие: контейнеры могут принимать только простые типы (char, int, wchar_t, и пр.).
Но проблема в том, что у контейнеров (QVector, QVarLengthArray) нет такого метода.
По-простому это делается так:
C++ (Qt)
QVector<int> v(10);
qint64 sizeInBytes = v.size() * sizeof(int);
но это как-то некошерно каждый раз писать такое..
Думал на шаблонах смастерить некоторую ф-ю которая бы автоматом считала размер контейнера в байтах,
набросал вот это:
C++ (Qt)
template <class T>
qint64 qtContainerSize(const T &container)
{
T::value_type datatype = T::value_type();
return container.size() * sizeof(datatype);
}
QVector<int>v(10);
qint64 sizeInBytes = qtContainerSize(v);
вроде работает, но ругается так:
e:\git\ng\123\typeof\ttt.h(7) : warning C4189: 'datatype' : local variable is initialized but not referenced
..\typeof\main.cpp(13) : see reference to function template instantiation 'qint64 qtContainerSize<QVector<T>>(const QVector<T> &)' being compiled
with
[
T=int
]
Есть ли возможность как-то красиво это реализовать?