Skip to content

Latest commit

 

History

History
78 lines (61 loc) · 1.43 KB

as_const.md

File metadata and controls

78 lines (61 loc) · 1.43 KB

as_const

  • utility[meta header]
  • std[meta namespace]
  • function template[meta id-type]
  • cpp17[meta cpp]
namespace std {
  template <class T>
  constexpr add_const_t<T>& as_const(T& t) noexcept;

  template <class T>
  void as_const(const T&&) = delete;
}
  • add_const_t[link /reference/type_traits/add_const.md]

概要

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

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

戻り値

add_const_t<T>&(t)
  • add_const_t[link /reference/type_traits/add_const.md]

例外

投げない

#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が呼ばれる
}
  • std::as_const[color ff0000]

出力

non-const
const

バージョン

言語

  • C++17

処理系

参照