Giriş
Normalde auto asla referans değildir.
Örnek
Şöyle yaparız.
Örnek
AllFormats() array dönen bir metod olsun. Şöyle yaparız
Normalde auto asla referans değildir.
Örnek
Şöyle yaparız.
int& foo() {
static int x = 42;
return x;
}
auto x = foo(); // Type of `x` is `int`, not `int&`.
Ancak dönüş tipi array ise sorun çıkar çünkü auto değişken pointer olarak algılanır. Bundan kurtulmak için auto& veya auto&& şeklinde kullanılır.Örnek
AllFormats() array dönen bir metod olsun. Şöyle yaparız
auto& array1 = AllFormats(); // 1.
auto&& array1 = AllFormats(); // 2.
decltype(auto) array1 = AllFormats(); // 3.
Açıklaması şöyle.1. Declares explicitly an lvalue reference.
2. Declares a universal reference, which collapses into an lvalue reference, because AllFormats returns an lvalue reference. It would be an rvalue reference if AllFormats returned Format&&.
3. auto type deduction uses different rules from decltype deduction. One key difference is that auto is never a reference, while decltype(E); may be a reference, depending on the expression E. decltype(auto) var = E allows a declaration using the decltype rules as if decltype(E) was used.
Hiç yorum yok:
Yorum Gönder