YSTest: operators.hpp 文件参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

类 | 命名空间 | 宏定义 | 类型定义 | 函数 | 变量
operators.hpp 文件参考
YBaseLib » YStandardExtend

重载操作符。 更多...

`#include "addressof.hpp"`
`#include "integer_sequence.hpp"`
operators.hpp 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

## 类

struct | ystdex::details::op_idt< _type >
struct | ystdex::details::ebases< _types >
struct | ystdex::details::bin_ops< _vN, _type, _type2, _tOpt >
struct | ystdex::details::ops_seq< class, typename, class, class >
struct | ystdex::details::ops_seq< _type, _type2, _tOpt, index_sequence< _vSeq... > >
struct | ystdex::details::bin_ops< 0, _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< 0, _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< 2, _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< 2, _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< 4, _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< 4, _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< 6, _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< 6, _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< 8, _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< 8, _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< 9, _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< 9, _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< 11, _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< 11, _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< 13, _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< 13, _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(0, 0), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(0, 0), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(0, 1), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(0, 1), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(0, 2), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(0, 2), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(0, 3), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(0, 3), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(2, 0), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(2, 0), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(2, 1), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(2, 1), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(2, 2), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(2, 2), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(2, 3), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(2, 3), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(4, 0), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(4, 0), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(4, 1), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(4, 1), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(4, 4), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(4, 4), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(4, 5), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(4, 5), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(6, 0), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(6, 0), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(6, 1), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(6, 1), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(6, 2), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(6, 2), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(6, 3), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(6, 3), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(8, 0), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(8, 0), _type, _type2, dep_ops::use_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(8, 1), _type, _type2, dep_ops::no_constfn >
struct | ystdex::details::bin_ops< ops_bin_id(8, 1), _type, _type2, dep_ops::use_constfn >
struct | ystdex::dep_ops::incrementable< _type, _tOpt >
struct | ystdex::dep_ops::decrementable< _type, _tOpt >
struct | ystdex::dep_ops::dereferenceable< _type, _type2, _tOpt >
struct | ystdex::dep_ops::indexable< _type, _type2, _type3, _tOpt >

## 命名空间

| ystdex
| `<memory>` 特性测试宏。
| ystdex::dep_ops
| 依赖名称查找操作：作为 ADL 的边界。
| ystdex::details

## 宏定义

#define | YB_Impl_Operators_DeOpt class _tOpt = yimpl(use_constfn)
#define | YB_Impl_Operators_H_n(_args) template<class _type, _args>
#define | YB_Impl_Operators_H1 YB_Impl_Operators_H_n(YB_Impl_Operators_DeOpt)
#define | YB_Impl_Operators_H2 YB_Impl_Operators_H_n(typename _type2 YPP_Comma YB_Impl_Operators_DeOpt)
#define | YB_Impl_Operators_H2_de
#define | YB_Impl_Operators_H2_Alias(_name, ...)
#define | YB_Impl_Operators_H2_Alias_de(_name, ...)
#define | YB_Impl_Operators_H3
#define | YB_Impl_Operators_f(_c, _op, _tRet, _expr, ...)
#define | YB_Impl_Operators_bin_ts(_n, _f, _c, _opt, ...)
#define | YB_Impl_Operators_bin_spec(_n, _f, ...)
#define | YB_Impl_Operators_cmpf(_c, _op, _expr, _ptp, _ptp2)
#define | YB_Impl_Operators_cmp(_n, _op, _expr, _ptp, _ptp2)
#define | YB_Impl_Operators_bin_tmpl(_id, _off, _op, ...)
#define | YB_Impl_Operators_bin(_id, _op)
#define | YB_Impl_Operators_con(_id, _op)
#define | YB_Impl_Operators_left(_id, _op)
#define | YB_Impl_Operators_Compare(_name, _bseq, _bseq_s)
#define | YB_Impl_Operators_Binary_Tmpl(_id, _name, _bseq)
#define | YB_Impl_Operators_Binary(_id, _name) YB_Impl_Operators_Binary_Tmpl(_id, _name, 0 YPP_Comma 1)
#define | YB_Impl_Operators_Commutative(_id, _name)
#define | YB_Impl_Operators_Left(_id, _name)
#define | YB_Impl_Operators_FlatAlias2_de(_name, ...)

## 类型定义

using | ystdex::dep_ops::no_constfn = false_
using | ystdex::dep_ops::use_constfn = true_
template<typename _type = void>
using | ystdex::details::op_idt_t = _t< op_idt< _type > >
template<size_t _vID, size_t... _vSeq>
using | ystdex::details::ops_bin_id_seq = index_sequence< ops_bin_id(_vID, _vSeq)... >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::less_than_comparable = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, index_sequence< 2, 4, 1 >, index_sequence< 0, 1, 2, 3, 4, 5 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::equality_comparable = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, index_sequence< 7 >, index_sequence< 6, 7, 8 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::equivalent = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, index_sequence< 10 >, index_sequence< 9 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::partially_ordered = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, index_sequence< 2, 11, 14 >, index_sequence< 11, 12, 2, 3, 13, 14 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::addable = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, details::ops_bin_id_seq< 0, 0, 1 >, details::ops_bin_id_seq< 0, 0, 1, 2, 3 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::subtractable = _t< details::ops_seq< _type, _type2, _tOpt, details::ops_bin_id_seq< 1, 0, 1 > >>
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::subtractable_left = _t< details::ops_seq< _type, _type2, _tOpt, details::ops_bin_id_seq< 1, 4, 5 > >>
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::multipliable = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, details::ops_bin_id_seq< 2, 0, 1 >, details::ops_bin_id_seq< 2, 0, 1, 2, 3 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::dividable = _t< details::ops_seq< _type, _type2, _tOpt, details::ops_bin_id_seq< 3, 0, 1 > >>
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::dividable_left = _t< details::ops_seq< _type, _type2, _tOpt, details::ops_bin_id_seq< 3, 4, 5 > >>
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::modable = _t< details::ops_seq< _type, _type2, _tOpt, details::ops_bin_id_seq< 4, 0, 1 > >>
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::modable_left = _t< details::ops_seq< _type, _type2, _tOpt, details::ops_bin_id_seq< 4, 4, 5 > >>
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::left_shiftable = _t< details::ops_seq< _type, _type2, _tOpt, details::ops_bin_id_seq< 5, 0, 1 > >>
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::right_shiftable = _t< details::ops_seq< _type, _type2, _tOpt, details::ops_bin_id_seq< 6, 0, 1 > >>
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::xorable = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, details::ops_bin_id_seq< 7, 0, 1 >, details::ops_bin_id_seq< 7, 0, 1, 2, 3 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::andable = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, details::ops_bin_id_seq< 8, 0, 1 >, details::ops_bin_id_seq< 8, 0, 1, 2, 3 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::orable = _t< details::ops_seq< _type, _type2, _tOpt, cond_t< is_same< _type, _type2 >, details::ops_bin_id_seq< 9, 0, 1 >, details::ops_bin_id_seq< 9, 0, 1, 2, 3 > >> >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::totally_ordered = details::flat_ops< _type, _type2, _tOpt, less_than_comparable, equality_comparable >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::additive = details::flat_ops< _type, _type2, _tOpt, addable, subtractable >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::multiplicative = details::flat_ops< _type, _type2, _tOpt, multipliable, dividable >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::integer_multiplicative = details::flat_ops< _type, _type2, _tOpt, multiplicative, modable >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::arithmetic = details::flat_ops< _type, _type2, _tOpt, additive, multiplicative >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::integer_arithmetic = details::flat_ops< _type, _type2, _tOpt, additive, integer_multiplicative >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::bitwise = details::flat_ops< _type, _type2, _tOpt, xorable, andable, orable >
template<class _type , class _tOpt = use_constfn>
using | ystdex::dep_ops::unit_steppable = details::ebases< incrementable< _type >, decrementable< _type > >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::shiftable = details::flat_ops< _type, _type2, _tOpt, left_shiftable, right_shiftable >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::ring_operators = details::flat_ops< _type, _type2, _tOpt, additive, subtractable_left, multipliable >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::ordered_ring_operators = details::flat_ops< _type, _type2, _tOpt, ring_operators, totally_ordered >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::field_operators = details::flat_ops< _type, _type2, _tOpt, ring_operators, dividable, dividable_left >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::ordered_field_operators = details::flat_ops< _type, _type2, _tOpt, field_operators, totally_ordered >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::euclidean_ring_operators = details::flat_ops< _type, _type2, _tOpt, ring_operators, dividable, dividable_left, modable, modable_left >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::ordered_euclidean_ring_operators = details::flat_ops< _type, _type2, _tOpt, totally_ordered, euclidean_ring_operators >
template<class _type , typename _type2 , class _tOpt = use_constfn>
using | ystdex::dep_ops::input_iteratable = details::ebases< equality_comparable< _type, _type, _tOpt >, incrementable< _type >, dereferenceable< _type, _type2, _tOpt > >
template<class _type , typename _type2 , class _tOpt = use_constfn>
using | ystdex::dep_ops::output_iteratable = details::ebases< incrementable< _type > >
template<class _type , typename _type2 , class _tOpt = use_constfn>
using | ystdex::dep_ops::forward_iteratable = details::ebases< input_iteratable< _type, _type2, _tOpt > >
template<class _type , typename _type2 , class _tOpt = use_constfn>
using | ystdex::dep_ops::bidirectional_iteratable = details::ebases< forward_iteratable< _type, _type2, _tOpt >, decrementable< _type > >
template<class _type , typename _type2 , typename _type3 , class _tOpt = use_constfn>
using | ystdex::dep_ops::random_access_iteratable = details::ebases< bidirectional_iteratable< _type, _type3, _tOpt >, less_than_comparable< _type, _type, _tOpt >, additive< _type, _type2, _tOpt >, indexable< _type, _type2, _type, _tOpt > >
template<class _type , typename _type2 = _type, class _tOpt = use_constfn>
using | ystdex::dep_ops::operators = details::flat_ops< _type, _type2, _tOpt, totally_ordered, integer_arithmetic, bitwise >

## 函数

| ystdex::details::YYYYYB_Impl_Operators_cmp (1, >=, !bool(x< y), _type, _type2) template< class _type
| ystdex::details::YYYYYB_Impl_Operators_cmp (3,<, y > x, _type2, _type) template< class _type
| ystdex::details::YYYYYB_Impl_Operators_cmp (5, >=, !bool(y > x), _type2, _type) template< class _type
| ystdex::details::YYYYYB_Impl_Operators_cmp (7, !=, !bool(x==y), _type2, _type) template< class _type
| ystdex::details::YYYYYB_Impl_Operators_cmp (10, !=, !bool(x< y) &&!bool(y< x), _type, _type2) template< class _type
| ystdex::details::YYYYYB_Impl_Operators_cmp (12, >=, bool(x > y)||bool(x==y), _type, _type2) template< class _type
| ystdex::details::YYYYYB_Impl_Operators_cmp (14, >=, bool(y< x)||bool(y==x), _type2, _type) inline size_t ops_bin_id(size_t id
| ystdex::details::YYYYYYYYYYYYYYYYYB_Impl_Operators_left (1, -) template< class _type
| ystdex::details::YYYYYYYYYYYYYYYYYB_Impl_Operators_left (3,/) template< class _type
| ystdex::details::YYYYYYYYYYYYYYYYYB_Impl_Operators_con (5, ^) template< class _type
| ystdex::details::YYYYYYYYYYYYYYYYYB_Impl_Operators_con (7,|) template< class _type
| ystdex::details::YYYYYYYYYB_Impl_Operators_bin (9, >>) template< class _type

## 变量

size_t | ystdex::details::off
| ystdex::details::_type2
template< typename... > class _gOps using | ystdex::details::flat_ops

## 详细描述

重载操作符。

版本
  r2841

作者
  FrankHB frank.nosp@m.hb19.nosp@m.89@gm.nosp@m.ail..nosp@m.com

自从
  build 260

创建时间:
  2011-11-13 14:58:05 +0800

修改时间:
  2018-07-14 22:58 +0800

文本编码:
  UTF-8

模块名称:
  YStandardEx::Operators

参见
  http://www.boost.org/doc/libs/1_60_0/boost/operators.hpp 。
  https://github.com/taocpp/operators 。
  https://en.wikipedia.org/wiki/Barton–Nackman_trick 。

用法同 Boost.Operators ，但不公开带数字后缀的接口。 使用基类引入操作符重载，而非其子对象。不保证子对象合式。 通常使用 private 基类，但以成员形式引入的操作符例外，需要使用 public 以被外部访问。 以成员形式引入的操作符仅出现 ISO C++ 不允许以非成员形式引入的操作符的情形中，包括： operator-> ； operator[] ； 使用具有上述操作符引入迭代器操作。

在文件 operators.hpp 中定义.

## 宏定义说明

## ◆ YB_Impl_Operators_bin

#define YB_Impl_Operators_bin | ( |  | _id,
|  |  | _op
| ) |  |

值:
YB_Impl_Operators_bin_tmpl(_id, 0, _op, x _op##= y, _type x, \
const _type2& y) \
YB_Impl_Operators_bin_tmpl(_id, 1, _op, x _op##= std::move(y), _type x, \
_type2&& y)

在文件 operators.hpp 第 209 行定义.

## ◆ YB_Impl_Operators_bin_spec

#define YB_Impl_Operators_bin_spec | ( |  | _n,
|  |  | _f,
|  |  | ...
| ) |  |

值:
YB_Impl_Operators_bin_ts(_n, _f, inline, no_constfn, __VA_ARGS__) \
YB_Impl_Operators_bin_ts(_n, _f, yconstfn, use_constfn, __VA_ARGS__)

在文件 operators.hpp 第 147 行定义.

## ◆ YB_Impl_Operators_bin_tmpl

#define YB_Impl_Operators_bin_tmpl | ( |  | _id,
|  |  | _off,
|  |  | _op,
|  |  | ...
| ) |  |

值:
YB_Impl_Operators_bin_spec(ops_bin_id(_id YPP_Comma _off), \
YB_Impl_Operators_f, _op, _type, __VA_ARGS__)

在文件 operators.hpp 第 206 行定义.

## ◆ YB_Impl_Operators_bin_ts

#define YB_Impl_Operators_bin_ts | ( |  | _n,
|  |  | _f,
|  |  | _c,
|  |  | _opt,
|  |  | ...
| ) |  |

值:
YB_Impl_Operators_H_n(typename _type2) \
struct bin_ops<_n, _type, _type2, dep_ops::_opt> \
{ \
template<yimpl(typename = void)> \
_f(_c, __VA_ARGS__) \
};

在文件 operators.hpp 第 139 行定义.

## ◆ YB_Impl_Operators_Binary

#define YB_Impl_Operators_Binary | ( |  | _id,
|  |  | _name
| ) |  | YB_Impl_Operators_Binary_Tmpl(_id, _name, 0 YPP_Comma 1)

在文件 operators.hpp 第 281 行定义.

## ◆ YB_Impl_Operators_Binary_Tmpl

#define YB_Impl_Operators_Binary_Tmpl | ( |  | _id,
|  |  | _name,
|  |  | _bseq
| ) |  |

值:
YB_Impl_Operators_H2_Alias_de(_name, _t<details::ops_seq<_type, _type2, \
_tOpt, details::ops_bin_id_seq<_id, _bseq>>>)

在文件 operators.hpp 第 278 行定义.

## ◆ YB_Impl_Operators_cmp

#define YB_Impl_Operators_cmp | ( |  | _n,
|  |  | _op,
|  |  | _expr,
|  |  | _ptp,
|  |  | _ptp2
| ) |  |

值:
YB_Impl_Operators_bin_spec(_n, YB_Impl_Operators_cmpf, _op, _expr, \
_ptp, _ptp2)

自从
  build 682

在文件 operators.hpp 第 168 行定义.

## ◆ YB_Impl_Operators_cmpf

#define YB_Impl_Operators_cmpf | ( |  | _c,
|  |  | _op,
|  |  | _expr,
|  |  | _ptp,
|  |  | _ptp2
| ) |  |

值:
YB_Impl_Operators_f(_c, _op, bool, _expr, const _ptp& x, const _ptp2& y) \
YB_Impl_Operators_f(_c, _op, bool, _expr, const op_idt_t<_ptp>& x, \
const _ptp2& y) \
YB_Impl_Operators_f(_c, _op, bool, _expr, const _ptp& x, \
const op_idt_t<_ptp2>& y)

在文件 operators.hpp 第 158 行定义.

## ◆ YB_Impl_Operators_Commutative

#define YB_Impl_Operators_Commutative | ( |  | _id,
|  |  | _name
| ) |  |

值:
YB_Impl_Operators_H2_Alias_de(_name, _t< \
details::ops_seq<_type, _type2, _tOpt, cond_t<is_same<_type, _type2>, \
details::ops_bin_id_seq<_id, 0 YPP_Comma 1>, \
details::ops_bin_id_seq<_id, 0 YPP_Comma 1 YPP_Comma 2 YPP_Comma 3>>>>)

在文件 operators.hpp 第 283 行定义.

## ◆ YB_Impl_Operators_Compare

#define YB_Impl_Operators_Compare | ( |  | _name,
|  |  | _bseq,
|  |  | _bseq_s
| ) |  |

值:
YB_Impl_Operators_H2_Alias_de(_name, _t<details::ops_seq<_type, _type2, \
_tOpt, cond_t<is_same<_type, _type2>, index_sequence<_bseq_s>, \
index_sequence<_bseq>>>>)

自从
  build 682

在文件 operators.hpp 第 257 行定义.

## ◆ YB_Impl_Operators_con

#define YB_Impl_Operators_con | ( |  | _id,
|  |  | _op
| ) |  |

值:
YB_Impl_Operators_bin(_id, _op) \
YB_Impl_Operators_bin_tmpl(_id, 2, _op, y _op##= x, const _type2& x, \
_type y) \
YB_Impl_Operators_bin_tmpl(_id, 3, _op, y _op##= std::move(x), _type2&& x, \
_type y)

在文件 operators.hpp 第 214 行定义.

## ◆ YB_Impl_Operators_DeOpt

#define YB_Impl_Operators_DeOpt class _tOpt = yimpl(use_constfn)

在文件 operators.hpp 第 66 行定义.

## ◆ YB_Impl_Operators_f

#define YB_Impl_Operators_f | ( |  | _c,
|  |  | _op,
|  |  | _tRet,
|  |  | _expr,
|  |  | ...
| ) |  |

值:
friend _c YB_ATTR(always_inline) _tRet \
operator _op(__VA_ARGS__) ynoexcept(noexcept(_expr)) \
{ \
return (_expr); \
}

在文件 operators.hpp 第 125 行定义.

## ◆ YB_Impl_Operators_FlatAlias2_de

#define YB_Impl_Operators_FlatAlias2_de | ( |  | _name,
|  |  | ...
| ) |  |

值:
YB_Impl_Operators_H2_Alias_de(_name, details::flat_ops<_type, _type2, \
_tOpt, __VA_ARGS__>)

在文件 operators.hpp 第 385 行定义.

## ◆ YB_Impl_Operators_H1

#define YB_Impl_Operators_H1 YB_Impl_Operators_H_n(YB_Impl_Operators_DeOpt)

在文件 operators.hpp 第 68 行定义.

## ◆ YB_Impl_Operators_H2

#define YB_Impl_Operators_H2 YB_Impl_Operators_H_n(typename _type2 YPP_Comma YB_Impl_Operators_DeOpt)

在文件 operators.hpp 第 70 行定义.

## ◆ YB_Impl_Operators_H2_Alias

#define YB_Impl_Operators_H2_Alias | ( |  | _name,
|  |  | ...
| ) |  |

值:
YB_Impl_Operators_H2 \
yimpl(using) _name = __VA_ARGS__;

在文件 operators.hpp 第 75 行定义.

## ◆ YB_Impl_Operators_H2_Alias_de

#define YB_Impl_Operators_H2_Alias_de | ( |  | _name,
|  |  | ...
| ) |  |

值:
YB_Impl_Operators_H2_de \
yimpl(using) _name = __VA_ARGS__;

在文件 operators.hpp 第 78 行定义.

## ◆ YB_Impl_Operators_H2_de

#define YB_Impl_Operators_H2_de

值:
YB_Impl_Operators_H_n(typename _type2 = _type YPP_Comma \
YB_Impl_Operators_DeOpt)

在文件 operators.hpp 第 72 行定义.

## ◆ YB_Impl_Operators_H3

#define YB_Impl_Operators_H3

值:
YB_Impl_Operators_H_n(typename _type2 YPP_Comma typename _type3 \
YPP_Comma YB_Impl_Operators_DeOpt)

在文件 operators.hpp 第 81 行定义.

## ◆ YB_Impl_Operators_H_n

#define YB_Impl_Operators_H_n | ( |  | _args | ) | template<class _type, _args>

在文件 operators.hpp 第 67 行定义.

## ◆ YB_Impl_Operators_Left

#define YB_Impl_Operators_Left | ( |  | _id,
|  |  | _name
| ) |  |

值:
YB_Impl_Operators_H2_Alias_de(_name, _t<details::ops_seq<_type, _type2, \
_tOpt, details::ops_bin_id_seq<_id, 0 YPP_Comma 1>>>) \
YB_Impl_Operators_H2_Alias_de(_name##_left, _t<details::ops_seq<_type, \
_type2, _tOpt, details::ops_bin_id_seq<_id, 4 YPP_Comma 5>>>)

在文件 operators.hpp 第 288 行定义.

## ◆ YB_Impl_Operators_left

#define YB_Impl_Operators_left | ( |  | _id,
|  |  | _op
| ) |  |

值:
YB_Impl_Operators_bin(_id, _op) \
YB_Impl_Operators_bin_tmpl(_id, 4, _op, _type(x) _op##= y, \
const _type2& x, const _type& y) \
YB_Impl_Operators_bin_tmpl(_id, 5, _op, \
_type(x) _op##= std::move(y), const _type2& x, _type&& y)

在文件 operators.hpp 第 220 行定义.

YB_Impl_Operators_bin_ts
#define YB_Impl_Operators_bin_ts(_n, _f, _c, _opt,...)
Definition: operators.hpp:138
x
const EncapsulationBase & x
Definition: NPLA1Forms.cpp:1536
YB_Impl_Operators_H_n
#define YB_Impl_Operators_H_n(_args)
Definition: operators.hpp:66
YB_Impl_Operators_bin_spec
#define YB_Impl_Operators_bin_spec(_n, _f,...)
Definition: operators.hpp:146
YB_Impl_Operators_bin
#define YB_Impl_Operators_bin(_id, _op)
Definition: operators.hpp:208
YPP_Comma
#define YPP_Comma
替换为逗号的预处理记号。
Definition: ydef.h:370
ystdex::dep_ops::no_constfn
false_ no_constfn
Definition: operators.hpp:59
ystdex::details::flat_ops
template< typename... > class _gOps using flat_ops
Definition: operators.hpp:243
YB_Impl_Operators_cmpf
#define YB_Impl_Operators_cmpf(_c, _op, _expr, _ptp, _ptp2)
Definition: operators.hpp:157
ystdex::details::_type2
_type2
Definition: operators.hpp:241
YB_Impl_Operators_DeOpt
#define YB_Impl_Operators_DeOpt
Definition: operators.hpp:65
YB_ATTR
#define YB_ATTR(...)
GNU 风格属性。
Definition: ydef.h:567
YSLib::UI::y
SPos SPos y
Definition: YWidget.cpp:44
YB_Impl_Operators_f
#define YB_Impl_Operators_f(_c, _op, _tRet, _expr,...)
Definition: operators.hpp:124
ystdex::cond_t
_t< cond< _tCond, _tThen, _tElse > > cond_t
Definition: meta.hpp:794
ystdex::_t
typename _type::type _t
嵌套类型别名。
Definition: meta.hpp:45
YB_Impl_Operators_bin_tmpl
#define YB_Impl_Operators_bin_tmpl(_id, _off, _op,...)
Definition: operators.hpp:205
yimpl
#define yimpl(...)
实现标签。
Definition: ydef.h:413
ystdex::dep_ops::use_constfn
true_ use_constfn
Definition: operators.hpp:61
ynoexcept
#define ynoexcept(...)
YSLib 无异常抛出保证：指定特定的异常规范。
Definition: ydef.h:1151
yconstfn
#define yconstfn
指定编译时常量函数。
Definition: ydef.h:1073
YB_Impl_Operators_H2_Alias_de
#define YB_Impl_Operators_H2_Alias_de(_name,...)
Definition: operators.hpp:77