なぜ参照ではないのかを理解しようとして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( ¬_a_ref != &stuff )
std::cout << "definately not a reference" << std::endl;
return 0;
}