C++ 如何编写嵌套的初始化器列表,如QPAIR的QVector

C++ 如何编写嵌套的初始化器列表,如QPAIR的QVector,c++,qt,initializer-list,qvector,C++,Qt,Initializer List,Qvector,警告: qvector.h(509):警告C4127:条件表达式为常量(main.cpp) h(506):编译类模板成员函数时 'QVector>::QVector(标准::初始值设定项列表)' 正在使用[T=QPair]进行编译 请参阅正在编译的函数模板实例化“QVector>::QVector(std::initializer_list)”的参考 我的代码: QVector< QPair< double, float> > container( {{4

警告:

qvector.h(509):警告C4127:条件表达式为常量(main.cpp) h(506):编译类模板成员函数时 'QVector>::QVector(标准::初始值设定项列表)' 正在使用[T=QPair]进行编译

请参阅正在编译的函数模板实例化“QVector>::QVector(std::initializer_list)”的参考

我的代码:

QVector< QPair< double, float> > container(
        {{40, 0.0f},
         {70, 0.95f},
         {80, 0.7f}}
);
QVector>容器(
{40,0.0f},
{70,0.95f},
{80,0.7f}
);
它构建得很好,我只希望警告消失(不改变警告级别)。我做错了什么

/*编辑*/


没有人对警告的内容有任何评论吗?到底是什么意思?其他人是否有警告?我在QVectors的初始值设定项列表上查阅了QT文档,它没有说太多。对于函数模板实例化,没有人有什么要说的吗?

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

  if (QTypeInfo<T>::isComplex)
if(QTypeInfo::isComplex)
这是一个简单的枚举值,在下面列出的类名声明语法中,有几个类没有模板、模板*、或模板。很想让我解释一下

template <typename T>
class QTypeInfo { enumbla;}

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

template <typename T>
class QTypeInfo<T*> { enumbla;}
模板
类QTypeInfo{enumbla;}
模板
类QTypeInfo{enumbla;}
模板
类QTypeInfo{enumbla;}
因此,if会查找适当的QTypeInfo类的枚举值,该类是一个常量,它是一个枚举yay


耶,不可避免的警告,更多的事情要压制

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

  if (QTypeInfo<T>::isComplex)
if(QTypeInfo::isComplex)
这是一个简单的枚举值,在下面列出的类名声明语法中,有几个类没有模板、模板*、或模板。很想让我解释一下

template <typename T>
class QTypeInfo { enumbla;}

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

template <typename T>
class QTypeInfo<T*> { enumbla;}
模板
类QTypeInfo{enumbla;}
模板
类QTypeInfo{enumbla;}
模板
类QTypeInfo{enumbla;}
因此,if会查找适当的QTypeInfo类的枚举值,该类是一个常量,它是一个枚举yay


耶,不可避免的警告,更多的事情要压制

缺少的分号只是在你的粘贴中吗?哈哈,是的;)谢谢你认为编译器在这种情况下会很难构建吗?粘贴中缺少的分号是吗?哈哈,是的;)谢谢在这种情况下,编译器会很难构建吗