2017-05-18 1 views
6

함수가 테이블에서 가져온 값을 반환해야하는 경우가 있습니다. 이 테이블의 셀 (테이블이 정상적으로 작동한다고 가정 해 봅시다)에 값이 포함될 수도 있고 그렇지 않을 수도 있습니다. 이 값은 여러 유형 중 하나 일 수 있습니다. int, double, string, date (다른 유형은 없습니다).반환 유형 std :: optional <std :: variant <...>>

그런 함수가 무엇을 반환합니까? std::optional<std::variant<std::string, int, double, std::chrono::time_point>>을 반환하는 것이 좋습니다.

optionalvariant을 잘 사용 하시겠습니까?

+0

옵션 + 변형과 같은 소리는이 요구 사항을 해결할 수 있습니다. – Kobi

답변

11

나는 이것을 std::monostate의 유용한 사용이라고 생각합니다. 구체적으로는 variant<std::monostate, int, double, std::string, std::chrono::time_point>입니다. monostatevariant에 값이없는 경우에 유용합니다.

optional<variant>이 아닌 실제 유형을 사용하는 것이 좋은 이유는 방문이 정상적으로 작동한다는 것입니다. monostate 매개 변수를 사용할 수있는 기능기를 작성하여 "빈"변형에도 visit을 사용할 수 있습니다.

+1

"std :: variant. [...]에서 잘 작동하는 빈 대안으로 사용하기위한 유닛 유형입니다." 옳은 소리. http://en.cppreference.com/w/cpp/utility/variant/monostate – user2296177

관련 문제