ключевое слово auto в С++

Почему компилятор C++ не догадывается, что это initializer_list, а не int?>

#include <iostream>
#include <typeinfo>

int main() {
    auto f = 45; // int, fine.
    auto li {12,2,54,65}; // initializer_list, as expected/
    auto A{12};  // ????
    std::cout<<typeid(A).name()<<std::endl;
    return 0;
}

person Person.Junkie    schedule 07.12.2014    source источник
comment
Что это говорит? Я ожидаю, что это будет signed integer или вообще не скомпилируется.   -  person RedX    schedule 07.12.2014
comment
Компилируется ли этот код каким-либо компилятором; если да, то какой?   -  person Cheers and hth. - Alf    schedule 07.12.2014
comment
@sbooth: воздержитесь от исправления кода вопроса. это меняет вопрос (если вы действительно не знаете, что делаете).   -  person Cheers and hth. - Alf    schedule 07.12.2014
comment
извините за ошибку. РЕДАКТИРОВАТЬ   -  person Person.Junkie    schedule 07.12.2014
comment
@Gui_C: да ладно, с последним редактированием я могу сообщить, что и mingw g++, и Visual C++ выводят тип как initializer_list<int>. я бы не ожидал, что он скомпилируется. узнать что-то новое...   -  person Cheers and hth. - Alf    schedule 07.12.2014
comment
Только N3922 меняет правила, делая вещи более простыми и интуитивно понятными, так что без оператора равенства вы получаете int, а auto li{1,2,3} - это ошибка компилятора, какой компилятор вы используете и в чем собственно ваш вопрос?   -  person Piotr Skotnicki    schedule 07.12.2014
comment
@Cheersandhth.-Alf Я добавил отсутствующую точку с запятой, что явно было ошибкой, не связанной с самим вопросом.   -  person sbooth    schedule 07.12.2014