警告:
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)
这是一个简单的枚举值,在下面列出的类名声明的语法中有几个没有模板、模板 * 或模板的类。很乐意向我解释一下!
template <typename T>
class QTypeInfo { enumbla;}
template<>
class QTypeInfo<void> { enumbla;}
template <typename T>
class QTypeInfo<T*> { enumbla;}
所以 if 查找适当 QTypeInfo 类的枚举值,它是一个常量,因为它是一个枚举耶!
耶,不可避免的警告,还有更多要抑制的东西!
关于c++ - 如何编写嵌套的 Initialiser 列表,例如 QPairs 的 QVector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772997/