如何调用模板化函数的非专用版本 QList::operator<<

How to call the non-specialized version of the templated function QList::operator<<

本文关键字:lt 专用 版本 operator QList 函数 何调用 调用      更新时间:2023-10-16

情况

我有一个QList<QVariant>,其中每个QVariant项目都应该是自己的QList<QVariant>。 要填充列表,我想使用 QList::operator<<,它已重载以采用const T & value和更专业的const QList<T> & other

问题

当我运行以下代码时:

QList<QVariant> rootList;
QList<QVariant> subList = QList<QVariant>() << 1 << 2 << 3;
rootList << subList;

据我所知,这里的最后一行将调用operator<< ( const QList<T> & other )函数,因为这是与subList类型匹配的更专业的函数。 生成的列表将如下所示:

rootList: [1, 2, 3]

相反,我希望它看起来像这样:

rootList: [[1, 2, 3]]

如何强制调用非专用版本的QList::operator<<

解决方法

我意识到有一个 QList::p ush_back 函数没有重载QList<T>,它完成了我正在寻找的。 但是,我不想依赖仅"为STL兼容性提供"的功能。

你可以显式地将QVariantList转换为QVariant

rootList << (QVariant)subList;

rootList << QVariant(sublist);