Skip to content

Latest commit

 

History

History
58 lines (44 loc) · 1.54 KB

File metadata and controls

58 lines (44 loc) · 1.54 KB

operator<<

  • utility[meta header]
  • std[meta namespace]
  • constant_wrapper[meta class]
  • function template[meta id-type]
  • cpp26[meta cpp]
template <constexpr-param L, constexpr-param R>
friend constexpr auto operator<<(L x, R y) noexcept;

概要

2つのconstant_wrapperが保持する値の左シフトをおこなう。

戻り値

constant_wrapper<(L::value << R::value)>{}を返す。

備考

  • Hidden friendsとして定義されるため、引数依存の名前探索 (ADL) でのみ発見される。
  • オペランドのいずれかがconstant_wrapperでない場合、保持する値へアンラップして通常の演算がおこなわれる。

#include <utility>
#include <type_traits>

int main()
{
  // オペランドがすべてconstant_wrapperなので、結果もconstant_wrapperになる
  auto x = std::cw<1> << std::cw<4>;
  static_assert(x == 16);
  static_assert(std::is_same_v<decltype(x), std::constant_wrapper<16>>);
}

出力


バージョン

言語

  • C++26

処理系

  • Clang: 23 [mark verified]
  • GCC: 16.1 [mark verified]
  • Visual C++: 2026 Update 2 [mark noimpl]

関連項目

参照