что нужно сделать, чтобы компилятор точно понял, что я от него хочу:
auto f = [](auto ptrVal) { return ptrVal != nullptr ? std::make_optional(*val) : std::nullopt; };
т.е., если указатель существует, то вернуть optional со значением, иначе пустой.
auto f = [](auto ptrVal) -> std::optional<decltype(*ptrVal)> { return ptrVal != nullptr ? std::make_optional(*val) : std::nullopt; }; ?
Обсуждают сегодня