message: NFC - Handle IndexedValue corner case
  Implicit conversion don't play nicely in expressions such as:
  `C() = A(i) * B(i)`.
  Make `C()` return an IndexedValue instead of casting to ValueHandle.
  This prevents double capture errors and is useful for the tutorial.
diff: @@ -121,7 +121,7 @@ template <typename Load, typename Store> struct TemplatedIndexedValue {
  TemplatedIndexedValue(const TemplatedIndexedValue &rhs) = default;
  - ValueHandle operator()() { return ValueHandle(*this); }
  + TemplatedIndexedValue operator()() { return *this; }
  /// Returns a new `TemplatedIndexedValue`.
  TemplatedIndexedValue operator()(ValueHandle index) {
  TemplatedIndexedValue res(base);
  