Qt - QList const корректность

A QList не может быть легко корректным с константой. Рассмотрим функцию

void f(QList<T *> list)
{
    list[0]->constFunction();
}

. Я могу изменить f на

void f(QList<const T *> list)

, но тогда я больше не могу делать

f(QList<T *>());    //Compile error

, поскольку компилятор не может неявно преобразовать QList в QList . Однако я могу явно переинтерпретировать преобразование QList следующим образом:

template <typename T> inline QList<const T *> &constList(const QList<T *> &list)
{
    return (QList<const T *> &)list;
}

Это позволяет мне использовать функцию шаблона constList для преобразования любого QList в QList , как в

f(constList(QList<T *>()));

, и кажется, что он работает нормально, но действительно ли это безопасно?

6
задан emkey08 26 June 2011 в 10:37
поделиться