Skip to content

Listing 9.3 - Compile Error #48

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

ITHelpDec
Copy link

A return is needed when calling the two-parameter version of accumulate_block() inside of the lambda function.

futures[i] = pool.submit([=] () {
-    accumulate_block<_ForwardIt, _Tp>()(block_start, block_end);
+    return accumulate_block<_ForwardIt, _Tp>()(block_start, block_end);
});

Without it, we receive the following error:

No viable overloaded '='

The listing in this repo (here) also doesn't mirror what was written in the book, so I've first brought them in sync before applying the correction.

- opted for version that returns type _Tp
- - void version in book takes three arguments
- - _Tp version in book takes two
- struct called without arguments
- add arguments according to earlier operator() definition
- book passes accumulate_block as part of a lambda function
- accumulate_block::operator() returns type _Tp
- we must call `return` on the struct's call inside the lambda to capture this return type
- without this, the code will fail to compile, and provide the following error:
- - "No viable overloaded '='"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant