We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
std::error_code f(); bool g(); int main() { // 1. 通る harmony::invert(f()) | and_then([](auto&&) { return g() ? std::optional<bool>{true} : std::nullopt; }); // 2. 通らない harmony::invert(f()) | and_then([](auto&&) { return harmony::to_either(g(), false); }); }
and_thenでは有効値は渡された関数で変換するが、無効値は推定した戻り値型のコンストラクタにその時点の無効値を渡すことで変換する。つまり、上記1ではint -> std::optional<bool>への変換が暗黙に行われており、結果は明らかに意図したものと異なる(無効値は意図せず有効値として次の処理に渡される)。
and_then
int -> std::optional<bool>
このことはおそらくor_elseでも起こる。もしかしたら他のところでも・・・
or_else
The text was updated successfully, but these errors were encountered:
うーんどうしよう・・・
Sorry, something went wrong.
No branches or pull requests
and_then
では有効値は渡された関数で変換するが、無効値は推定した戻り値型のコンストラクタにその時点の無効値を渡すことで変換する。つまり、上記1ではint -> std::optional<bool>
への変換が暗黙に行われており、結果は明らかに意図したものと異なる(無効値は意図せず有効値として次の処理に渡される)。このことはおそらく
or_else
でも起こる。もしかしたら他のところでも・・・The text was updated successfully, but these errors were encountered: