for (const auto& p : {100, 200, 300, 400} ) {
 std::cout << p << std::endl;
}
↑も通りました。
すくなくとも、for each の文脈においては、
std::vector<int> {100, 200, 300, 400}; 

{100, 200, 300, 400}
は等価であるかのように振舞っています。詳細は分かりません。