Рассмотрим код:
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> v{{"awe", "kjh"}}; // not v{"awe", "kjh"}
std::cout << v.size() << std::endl;
return 0;
}
Является ли этот код ошибочным? Или, может быть, допустимо использовать двойное
{}
при инициализации вектора?Я пробовал этот код на gcc и MSVC. MSVC 2012 + complier Nov 2012 просто не может его скомпилировать, что неудивительно. Этот код, скомпилированный с помощью gcc 4.7 или 4.8, дает ошибку выполнения во время выполнения программы. Правильно ли это поведение?
К сожалению, не могу протестировать его с другими компиляторами.