最終更新日時:
が更新

履歴 編集

function template
<utility>

std::as_const(C++17)

namespace std {
  template <class T>
  constexpr add_const_t<T>& as_const(T& t) noexcept;

  template <class T>
  void as_const(const T&&) = delete;
}

概要

左辺値参照をconst左辺値参照にする。

constと非constのオーバーロードがある場合、const版を明示的に呼び出す目的で使われる。

戻り値

add_const_t<T>&(t)

例外

投げない

#include <iostream>
#include <utility>

struct A {
  void f()
  {
    std::cout << "non-const" << std::endl;
  }

  void f() const
  {
    std::cout << "const" << std::endl;
  }
};

int main()
{
  A a;
  a.f(); // f()が呼ばれる
  std::as_const(a).f(); // f() constが呼ばれる
}

出力

non-const
const

バージョン

言語

  • C++17

処理系

参照