Skip to content

Latest commit

 

History

History
75 lines (57 loc) · 1.81 KB

File metadata and controls

75 lines (57 loc) · 1.81 KB

operator->

  • iterator[meta header]
  • std[meta namespace]
  • basic_const_iterator[meta class]
  • function[meta id-type]
  • cpp23[meta cpp]
constexpr const auto* operator->() const
  requires is_lvalue_reference_v<iter_reference_t<Iterator>> &&
           same_as<remove_cvref_t<iter_reference_t<Iterator>>, value_type>;
  • is_lvalue_reference_v[link /reference/type_traits/is_lvalue_reference.md]
  • iter_reference_t[link /reference/iterator/iter_reference_t.md]
  • same_as[link /reference/concepts/same_as.md]
  • remove_cvref_t[link /reference/type_traits/remove_cvref.md]

概要

イテレータを通して参照先の要素のメンバにアクセスする

戻り値

ラップするイテレータをcurrent_というメンバに保持するとして

#include <iostream>
#include <iterator>
#include <vector>

struct S {
  int n;

  void print() const {
    std::cout << "call const : " << this->n << '\n';
  }

  void print() {
    std::cout << "call non const : " << this->n << '\n';
  }
};

int main() {
  std::vector<S> vec = {S{1}, S{3}};

  std::basic_const_iterator cit = vec.begin();

  cit->print();
}
  • cit->[color ff0000]

出力

call const : 1

バージョン

言語

  • C++23

処理系

参照