Почему auto не является ссылкой, если его инициализатор является ссылкой?

Я пытаюсь понять, почему not_a_refне является ссылкой. Я понимаю, что могу сделать ссылку по auto &. Я некоторое время копался в стандарте, но заблудился и не мог понять, где определяется это поведение.

Пример:

#include <vector>
#include <iostream>
#include <type_traits>

std::vector<int> stuff;

std::vector<int>& get_stuff()
{
    return stuff;
}

int main()
{
    auto not_a_ref = get_stuff();

    if( std::is_reference<decltype(not_a_ref)>::value )
        std::cout << "is_reference true" << std::endl;
    else
        std::cout << "is_reference false" << std::endl;

    if( &not_a_ref != &stuff )
        std::cout << "definately not a reference" << std::endl;

    return 0;
}
9
задан Zac 1 July 2012 в 04:43
поделиться