다음 코드 :
std::optional<std::string> so;
std::cout << so->size() << std::endl;
std::cout << so.has_value();
출력 :
0
0
내 질문은 그것이 안전한지 여부입니다 : so->size()
빈 선택 사항. clang sanitizer를 사용했지만 위 코드에서 UB를보고하지 않았습니다.
operator->
빈에서 사용 하는 것은 std::optional
에있는 유형에 관계없이 정의되지 않은 동작 T
입니다 std::optional<T>
.
cppreference에 따르면 std::optional<T>::operator->
:
*this
에 값이 없으면 동작이 정의 되지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다