АК
Size: a a a
АК
АК
m
void value() const requires std::is_same_v<T, void> { ... }
std::add_lvalue_reference_t<T> value() requires (!std::is_same_v<T, void>) { ... }
std::add_lvalue_reference_t<const T> value() const requires (!std::is_same_v<T, void>) { ... }
Result<void, E>
все равно понадобиться специализация всего класса потому что нельзя хранить void value
.АК
Result<void, E>
все равно понадобиться специализация всего класса потому что нельзя хранить void value
.[[no_unique_address]] std::conditional_t<std::is_same_v<T, void>, std::nullopt_t, T> value
m
[[no_unique_address]] std::conditional_t<std::is_same_v<T, void>, std::nullopt_t, T> value
DK
АК
constexpr
АК
DK
DK
АК
AF
MK
D
unique_ptr<void>
собирается, а у него есть Ty& operator*()MK
unique_ptr<void>
собирается, а у него есть Ty& operator*()АК
unique_ptr<void>
собирается, а у него есть Ty& operator*()void
, а реализация operator*
действительно требует возвращать add_lvalue_reference_t<T>