return 在具有 std::async 的函数中
return in functions with std::async
我有一个函数应该总是 return A[0][1]。但是我使用 std::async 并且 gcc 说:
test_fibonacci_method/1/main.cpp:147:1: warning: control reaches end of non-void function [-Wreturn-type]
Integer Fib_iterative_n_Matrix(const unsigned& n) {
if (n < 2) return n; // Fib(0):=0 and Fib(1):=1
std::array<std::array<Integer,2>,2> A = {1,0,0,1}, FIB = {1,1,1,0};
auto a = std::async(std::launch::async, [&]() { Matrixpower_A_time_B_pow_x(A, FIB, n); return true; });
if (a.get()) { // blocks
return A[0][1]; // fib(n)
}
}
如何用 A[0][1] 更改最后一个 IF?
好的,我现在明白 if 是不必要的了。而 a.get() 也太多了,因为没有使用 lambda 的结果 a.wait() 更好。
Integer Fib_iterative_n_Matrix(const unsigned& n) {
if (n < 2) return n; // Fib(0):=0 and Fib(1):=1
std::array<std::array<Integer,2>,2> A = {1,0,0,1}, FIB = {1,1,1,0};
auto a = std::async(std::launch::async, [&]() { Matrixpower_A_time_B_pow_x(A, FIB, n); return true; });
a.wait(); // blocks
return A[0][1]; // fib(n)
}
我有一个函数应该总是 return A[0][1]。但是我使用 std::async 并且 gcc 说:
test_fibonacci_method/1/main.cpp:147:1: warning: control reaches end of non-void function [-Wreturn-type]
Integer Fib_iterative_n_Matrix(const unsigned& n) {
if (n < 2) return n; // Fib(0):=0 and Fib(1):=1
std::array<std::array<Integer,2>,2> A = {1,0,0,1}, FIB = {1,1,1,0};
auto a = std::async(std::launch::async, [&]() { Matrixpower_A_time_B_pow_x(A, FIB, n); return true; });
if (a.get()) { // blocks
return A[0][1]; // fib(n)
}
}
如何用 A[0][1] 更改最后一个 IF?
好的,我现在明白 if 是不必要的了。而 a.get() 也太多了,因为没有使用 lambda 的结果 a.wait() 更好。
Integer Fib_iterative_n_Matrix(const unsigned& n) {
if (n < 2) return n; // Fib(0):=0 and Fib(1):=1
std::array<std::array<Integer,2>,2> A = {1,0,0,1}, FIB = {1,1,1,0};
auto a = std::async(std::launch::async, [&]() { Matrixpower_A_time_B_pow_x(A, FIB, n); return true; });
a.wait(); // blocks
return A[0][1]; // fib(n)
}