【发布时间】:2016-05-10 13:50:53
【问题描述】:
三个简单的语句,一个不编译。
std::vector<size_t>({});
std::vector<size_t>({ 1 }); // This does not compile
std::vector<size_t>({ 1, 2 });
只有列表中有一个元素的第二条语句会带来错误:
cannot convert from 'initializer-list' to 'std::vector<size_t,std::allocator<char32_t>>'
它适用于char、long、int 等,但不适用于size_t。有谁知道为什么,也许有解决方法?
完整代码如下:
// ConsoleApplication1.cpp : main project file.
#include "stdafx.h"
#include <vector>
using namespace System;
int main(array<System::String ^> ^args)
{
std::vector<size_t>({});
std::vector<size_t>({ 1 });
std::vector<size_t>({ 1, 2 });
return 0;
}
我正在使用 VS2013 的 C++/CLI 编译器
【问题讨论】:
-
从 c++11 开始工作。
-
我要花钱解决 OP 没有使用 C++11 的问题。错误状态 'initializer-list' 与
std::initializer_list不同。 -
在 ISO C++ 中,初始化是正确的并且使用向量的
initializer_list<size_t>构造函数。显然 C++/CLI 是不同的
标签: .net visual-c++ vector c++-cli initializer-list