如何编写嵌套的 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 的枚举值,这是一个常量,因为它是一个枚举耶!
是的不可避免的警告,更多的东西要抑制!
警告:
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 的枚举值,这是一个常量,因为它是一个枚举耶!
是的不可避免的警告,更多的东西要抑制!