#include <optional>
bool f() {
std::optional<int> opt;
return opt;
}
컴파일하지 않습니다 : 'return': cannot convert from 'std::optional<int>' to 'bool'
컨설팅 참조 설명을 찾아야한다고 생각했지만 괜찮 았으므로 읽었습니다.
일부 유형 T1의 표현식이 해당 유형을 허용하지 않지만 다른 유형 T2를 허용하는 컨텍스트에서 사용될 때마다 내재적 변환이 수행됩니다. 특히:
- T2를 매개 변수로 선언 한 함수를 호출 할 때 표현식이 인수로 사용될 때;
- T2를 기대하는 연산자와 함께 피연산자로 표현식이 사용될 때;
- T2를 반환하는 함수에 return 문을 포함하여 T2 유형의 새 객체를 초기화 할 때;
- 표현식이 스위치 명령문에서 사용될 때 (T2는 정수 유형);
- 표현식이 if 문이나 루프에서 사용될 때 (T2는 bool)
operator bool()
의는std::optional
있다explicit
.