Предположим, у меня есть следующая шаблонная функция:
template <typename T>
std::optional<std::reference_wrapper<const T>> larger(const T data[], size_t count) {
if(!count) return std::nullopt;
size_t index_max {};
for(size_t i {1ULL}; i < count; ++i)
index_max = data[i] > data[index_max] ? i : index_max;
return std::optional< std::reference_wrapper<const T> > {&data[index_max]};
}
Я пытаюсь вернуть необязательную ссылку, но мне не удается это сделать. Я не уверен, что делать дальше. Это то, что я придумал, изначально то, что у меня было std::optional<const T*>
в качестве возвращаемого типа.