14 Kasım 2017 Salı

Function Ref Qualifier

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.
// 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