Три простых оператора, один не компилируется.std :: vector, почему список инициализаторов не работает в C++/CLI
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;
}
Я использую ++/CLI компилятор C от VS2013
[Works fo] (http://coliru.stacked-crooked.com/a/b360341326a33bcf) [r me] (http: //coliru.stacked -crooked.com/a/a9fb491f977996f3). Где ваш [MCVE]? –
Работает с C++ 11. – Klaus
Почему вы используете аргумент size_t как шаблон? Не могли бы вы использовать int или long? – sergiol