constexpr which を get に渡す
そういえば、constexpr variant だと which の値を直接 get に渡すことが出来ますねーと。
[ソース]
#include <sprout/variant.hpp> #include <sprout/string.hpp> int main(){ typedef sprout::variant<int, double, sprout::string<16>> var; { constexpr var v{42}; static_assert(sprout::get<v.which()>(v) == 42, ""); } { constexpr var v{1.25}; static_assert(sprout::get<v.which()>(v) == 1.25, ""); } { constexpr var v{ sprout::stretch<16>("homu") }; static_assert(sprout::get<v.which()>(v) == "homu", ""); } return 0; }
どんな値が保存されているか分からない場合だと結構有効そうな。
Sprout.Weed の戻り値とか。