Function Ref Qualifier C++11 ile gelen ve metodun sağ tarafında eklenen & işaretidir. Eğer nesne rvalue ise farklı bir metodun çağrılması sağlanabilir.
Function Ref Qualifier ve R-Value Farkı
Bu örnekte r-value kullanılır.
// t.cpp
#include <iostream>
struct test{
void f() &{ std::cout << "lvalue object\n"; } //l-value ref qualified
void f() &&{ std::cout << "rvalue object\n"; } //r-value ref qualified
};
int main(){
test t;
t.f(); // lvalue
test().f(); // rvalue
}
Bu özelliği şimdiye kadar hiç kullanmadım.Function Ref Qualifier ve R-Value Farkı
Bu örnekte r-value kullanılır.
#include <string>
void foo(const std::string &) {}
void foo(std::string &&) = delete;
int main()
{
std::string world = "World";
foo("Hello"); // Doesn't compile, wants to use foo(std::string &&)
foo(world); // Compiles
}
Hiç yorum yok:
Yorum Gönder