0
std::optional
는 방법을value_if - value_or의 반대 또는 std :: optional의 반대?
template< class U > constexpr T value_or(U&& default_value) const&;
을 가지고 있으며, 아직 그 반대 일처럼 스며 생성자
template< class U > optional(bool condition, const U& value);
이 없습니다.
constexpr std::optional<T> value_if(bool condition, const T& value) {
return condition ? nullopt : std::optional(value);
}
내 질문 :
- (I 나열된 변종 중 하나에서)를
value_if
와 개념에 문제가 있습니다 또는 당신은 정적 방법 /라는 이름의 생성자 관용구가 기대? - 표준에 제안 된 것과 비슷한 것이 었나요?
참고 : const T& value
또는 const T&& value
중 어느 것이 있는지 확실하지 않았습니다.
난 이해가 확실하지 않다. 참조로 전달하면 어떤 시점에서 라이브 T 객체가 생성됩니까? 즉, 'value_if'에 전달한 초기 인수가 있습니다.이 인수는 참조를 전달하는 기존 객체입니다. 그리고 3 진수 연산자의 세 번째 절에 구조가 있습니다. 그러나 짧은 순환 논리이므로 실제로 호출되지 않습니다. 또는 나는 무엇인가 놓치고 있냐? – einpoklum
@einpoklum : 추가 예제를 참조하십시오. –
아, 그게 정확히'my_optional.value_or (get_object (...)) '와 똑같은데,'auto v = my_optional? my_optional.value : v {}'; – einpoklum