フォロー

C++で戻り値をoptional<T>に限定したいとき、template <typename T> optional<T> f()とかだとテンプレートパラメータの明示が必要になってしまうので、template <typename T> auto f()として、戻り値の型decltype(f())とoptional<remove_reference_t<decltype(declval<decltype(f())>().value())>>が同型であるかチェックすれば実現できた。
optionalはクラステンプレートなので、これまたなかなか面倒だが、is_optionalを自前で作っても良さそう

Member Detection使っても良さそうだけど、おそらくMember Detectionだと穴があって、で、この方法だと、確実に戻り値をoptionalに限定できるんじゃないかと思われる

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。