如何调用模板化函数的非专用版本 QList::operator<<
How to call the non-specialized version of the templated function QList::operator<<
情况
我有一个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);
相关文章:
- .cpp和.h文件中的模板专用化声明
- 调用专用模板时出错"no matching function for call to [...]"
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 模板专用化(按容器):value_type
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- 静态数据成员模板专用化的实例化点在哪里
- 特征 3 类的模板专用化
- Visual Studio 2017 不允许我创建 C++ 专用模板
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 具有常量引用参数的函数模板专用化
- 使用其他模板的模板专用化
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 嵌套模板显式专用化
- 如何检查模板专用化是否是基本模板的子类?
- C++:部分模板专用化用例
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 使用对象的基类部分模板专用化对对象进行哈希处理::哈希
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?