std::async
に引数として非const参照を渡すことは不可能であることに気付きました。参照によってstd :: asyncに引数を渡すことができません
#include <functional>
#include <future>
void foo(int& value) {}
int main() {
int value = 23;
std::async(foo, value);
}
私のコンパイラ(GCC 4.8.1)は、この例について、次のエラーを与える:
error: no type named ‘type’ in ‘class std::result_of<void (*(int))(int&)>’
しかし、私はstd::reference_wrapper
にstd::async
に渡された値をラップした場合、すべてがOKです。これは、std::async
が値で引数を取るためだと思いますが、エラーの理由はまだ分かりません。
'std :: reference_wrapper'をタイプする必要はありません。 'std :: ref'を使います。 – chris
私は 'std :: ref'を使用しますが、ヒントのためにありがとう:) – lizarisk
このエラーの理由に興味があるなら、libstdC++のソースコードを掘り下げなければなりません:http://gcc.gnu .org/onlinedocs/gcc-4.8.1/libstdC++/api/a01256_source.html見るべき行番号はエラーです。がんばろう。 – jrok