对于可选项template<class U = T> optional<T>& operator=(U&& v);,标准要求(参见[optional.assign] /3.16):
template<class U = T> optional<T>& operator=(U&& v);
除非... conjunction_v<is_scalar<T>, is_same<T, decay_t<U>>>是false ... 否则此函数不应参与重载决策 .
conjunction_v<is_scalar<T>, is_same<T, decay_t<U>>>
false
为什么在分配类型标量时我们必须排除大小写U == T?
U == T
c++ optional language-lawyer c++17
c++ ×1
c++17 ×1
language-lawyer ×1
optional ×1