Вдохновленный этим ответом, я попробовал следующий пример:
#include <map>
#include <string>
#include <iostream>
int main()
{
const std::map< int, std::string > mapping = {
1, "ONE",
2, "TWO",
};
const auto it = mapping.find( 1 );
if ( mapping.end() != it )
{
std::cout << it->second << std::endl;
}
else
{
std::cout << "not found!" << std::endl;
}
}
и компиляция завершилась неудачей со следующим сообщением об ошибке (g++ 4.6.1):
gh.cpp:11:5: error: could not convert '{1, "ONE", 2, "TWO"}' from '<brace-enclosed initializer list>' to 'const std::map<int, std::basic_string<char> >'
Я знаю, как это исправить:
const std::map< int, std::string > mapping = {
{1, "ONE"},
{2, "TWO"},
};
но почему компиляция завершилась неудачей в верхнем примере?