Если я это сделаю:
std::map<string, size_t> word_count;
size_t value = word_count.count("a") == 0 ? 1 : 2;
word_count["a"] = value;
то конечное значение word_count [ "a" ] равно 1, как и следовало ожидать. Если я это сделаю:
std::map<string, size_t> word_count;
word_count["a"] = word_count.count("a") == 0 ? 1 : 2;
то окончательное значение word_count [ "a" ] равно 2. Почему??