【发布时间】:2012-10-03 20:17:54
【问题描述】:
程序:
#include<vector>
int main() {
std::vector<int>::size_type size=3;
std::vector<int> v{size};
}
编译时使用
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
产生错误:
ppp.cpp: In function ‘int main()’:
ppp.cpp:5:28: error: narrowing conversion of ‘size’ from ‘std::vector<int>::size_type {aka long unsigned int}’ to ‘int’ inside { } [-fpermissive]
ppp.cpp:5:28: error: narrowing conversion of ‘size’ from ‘std::vector<int>::size_type {aka long unsigned int}’ to ‘int’ inside { } [-fpermissive]
在http://www.cplusplus.com/reference/stl/vector/vector/ 上写着
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );
我希望使用该构造函数。
谁能解释一下?
【问题讨论】:
-
与您的问题无关,但您不需要
typename前面的std::vector<int>::size_type:这里没有依赖名称。 -
@Luc 我删除了它。之所以出现在这里,是因为代码片段取自更复杂的上下文。
标签: c++ vector c++11 std initializer-list