निम्न कोड (on Ideone) मुझे एक त्रुटि क्यों देता है?मैं std :: भविष्य के पैरामीटर में संदर्भ का उपयोग क्यों नहीं कर सकता
#include <future>
#include <iostream>
#include <string>
int main()
{
int foo = 0;
bool bar = false;
std::future<std::string> async_request = std::async(
std::launch::async,
[=, &foo](bool& is_pumping_request) -> std::string {
return "str";
},
bar
);
std::cout << async_request.get() << std::endl;
}
आउटपुट:
In file included from /usr/include/c++/5/future:38:0,
from prog.cpp:1:
/usr/include/c++/5/functional: In instantiation of 'struct std::_Bind_simple<main()::<lambda(bool&)>(bool)>':
/usr/include/c++/5/future:1709:67: required from 'std::future<typename std::result_of<_Functor(_ArgTypes ...)>::type> std::async(std::launch, _Fn&&, _Args&& ...) [with _Fn = main()::<lambda(bool&)>; _Args = {bool&}; typename std::result_of<_Functor(_ArgTypes ...)>::type = std::basic_string<char>]'
prog.cpp:15:2: required from here
/usr/include/c++/5/functional:1505:61: error: no type named 'type' in 'class std::result_of<main()::<lambda(bool&)>(bool)>'
typedef typename result_of<_Callable(_Args...)>::type result_type;
^
/usr/include/c++/5/functional:1526:9: error: no type named 'type' in 'class std::result_of<main()::<lambda(bool&)>(bool)>'
_M_invoke(_Index_tuple<_Indices...>)
^
हालांकि, अगर मैं पैरामीटर सूची में bool&
bool
को बदलने के लिए, यह compiles successfully।
क्यों?
'क्रेफ' अच्छा अभ्यास है, लेकिन 'रेफरी' और यहां तक कि कुछ भी नहीं (एक प्रति पास करें) अभी भी काम करेगा (" काम "की कुछ परिभाषा के लिए) –