2016-04-10 32 views
1

fonksiyon çağırma örneğin ederken, belirli parametrelerini aktarmak için bir fonksiyon parametreleri verilen rvalue veya lvalue referanslar bağlamak için bir std::bind metodubağlama işlevi sonucu C++ C++ 11

#include <functional> 
#include <iostream> 

int foo(int x, int y) { 
    return x + y; 
} 

int main() { 
    int result; 
    std::function<void(int, int)> f = bind_result(foo, result); 
    f(1, 2); 
    std::cout << result << std::endl; 
} 
+1

hiçbir xValue referans yoktur. – Barry

+0

Haklıyım, licht'i veya rvalue referansını kısa –

cevap

3

Kullanım bir lambda:

, yöntemde inşa böyle bir şey yapmak mümkün bazı değişkenin referans fonksiyonun sonucu orada bağlamaktır 0

Eğer keyfi argümanları iletir şey istiyorsanız, variadic şablonu kullanabilirsiniz:

auto fvar = [&result](auto... args) { 
    result = foo(std::forward<decltype(args)>(args)...); 
}; 
+0

[Demo] (https://ideone.com/74gx6O), [yönlendirme demosu] (https://ideone.com/ttqmxx) –

+0

Elbette, neden bunu düşünmedim? –