클래스 T의 정렬 요구 사항이 alignas 키워드로 지정된 경우 std::optional<T> 및 boost::optional<T>이 해당 정렬을 준수하는지 보장됩니까? 그들은 단순히 래퍼 a를 T 객체의 클래스와 bool initialized이라면 필요에 따라 는, 그들은 자동으로 T 멤버를 정렬 것이지만, 표준 및 부스트 문서 상태는 어떤 객체를 보유
표준 : 옵션을 사용하여 몇 가지 코드를 교체 할 때 내가 런타임 오류가 있었다 : 오래된 코드 : T getValue();
...
const auto& value = getValue();
value.get();
새로운 코드 : std::optional<T> getValue();
...
const auto& value = getValue().v
C++로 전환하고 사용자 정의 std::optional 솔루션을 표준 I/F로 바꾸면 clang 5의 예기치 않은 동작이 감지되었습니다. 어떤 이유로 인해 std::is_constructible 특성 클래스의 특성이 잘못 평가되어 emplace()이 사용 중지되었습니다. #include <optional>
/// Precondition #1: T mus