如何编写嵌套的 Initialiser 列表,例如 QPairs 的 QVector

how to write nested Initialiser list, eg a QVector of QPairs

警告:

qvector.h(509): warning C4127: conditional expression is constant (main.cpp) qvector.h(506) : while compiling class template member function 'QVector>::QVector(std::initializer_list)' being compiled with [T=QPair]

see reference to function template instantiation 'QVector>::QVector(std::initializer_list)' being compiled

我的代码:

QVector< QPair< double, float> > container(
        {{40, 0.0f},
         {70, 0.95f},
         {80, 0.7f}}
);

构建良好,我只是希望警告消失(不更改警告级别)。我做错了什么?

/*编辑*/

没有人对警告是什么有任何意见吗?究竟是什么意思?其他人是否有警告?我查阅了有关 QVectors 初始化列表的 QT 文档,但它并没有说太多。没有人对函数模板实例化有什么要说的吗?

这个警告似乎是不可避免的,而且与我的初始化列表关系不大,而与 qvector 关系更大。 Qvector 检查的任何构造函数

  if (QTypeInfo<T>::isComplex)

这是一个简单的枚举值,下面列出的 class 名称声明的语法中有几个 class 没有模板、模板 * 或模板。很想向我解释一下!

template <typename T>
class QTypeInfo { enumbla;}

template<>
class QTypeInfo<void> { enumbla;}

template <typename T>
class QTypeInfo<T*> { enumbla;}

所以 if 查找适当 QTypeInfo class 的枚举值,这是一个常量,因为它是一个枚举耶!

是的不可避免的警告,更多的东西要抑制!