The `operator[]` of `_UnaryOp` and `_BinaryOp` returns the result of calling `__op_`, so its return type should be `__result_type`, not e.g. `_A0::value_type`. However, `_UnaryOp::value_type` also should never have been `_A0::value_type`; it needs to be the correct type for the result of the unary op, e.g. `bool` when the op is `logical_not`. This turns out to matter when multiple operators are nested, e.g. `+(v == v)` needs to have a `value_type` of `bool`, not `int`, even when `v` is of type `valarray<int>`. Differential Revision: https://reviews.llvm.org/D103416 |
||
|---|---|---|
| .. | ||
| bit | ||
| c.math | ||
| cfenv/cfenv.syn | ||
| complex.number | ||
| numarray | ||
| numbers | ||
| numeric.ops | ||
| numeric.requirements | ||
| numerics.general | ||
| rand | ||