📄 must_init.hpp
字号:
>
inline must_init<T> operator ~(must_init<T> const& v)
{
return must_init<T>(~v.base_type_value());
}
// operator <<
template< ss_typename_param_k T
>
inline must_init<T> operator <<(must_init<T> const& lhs, must_init<T> const& rhs)
{
return must_init<T>(lhs.base_type_value() << rhs.base_type_value());
}
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> operator <<(must_init<T> const& lhs, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> operator <<(must_init<T> const& lhs, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
return must_init<T>(lhs.base_type_value() << rhs);
}
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> operator <<(ss_typename_type_k must_init<T>::value_type const& lhs, must_init<T> const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> operator <<(T const& lhs, must_init<T> const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
return must_init<T>(lhs << rhs.base_type_value());
}
// operator >>
template< ss_typename_param_k T
>
inline must_init<T> operator >>(must_init<T> const& lhs, must_init<T> const& rhs)
{
return must_init<T>(lhs.base_type_value() >> rhs.base_type_value());
}
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> operator >>(must_init<T> const& lhs, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> operator >>(must_init<T> const& lhs, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
return must_init<T>(lhs.base_type_value() >> rhs);
}
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> operator >>(ss_typename_type_k must_init<T>::value_type const& lhs, must_init<T> const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> operator >>(T const& lhs, must_init<T> const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
return must_init<T>(lhs >> rhs.base_type_value());
}
// operator &
template< ss_typename_param_k T
>
inline must_init<T> operator &(must_init<T> const& lhs, must_init<T> const& rhs)
{
return must_init<T>(lhs.base_type_value() & rhs.base_type_value());
}
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> operator &(must_init<T> const& lhs, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> operator &(must_init<T> const& lhs, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
return must_init<T>(lhs.base_type_value() & rhs);
}
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> operator &(ss_typename_type_k must_init<T>::value_type const& lhs, must_init<T> const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> operator &(T const& lhs, must_init<T> const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
return must_init<T>(lhs & rhs.base_type_value());
}
// operator |
template< ss_typename_param_k T
>
inline must_init<T> operator |(must_init<T> const& lhs, must_init<T> const& rhs)
{
return must_init<T>(lhs.base_type_value() | rhs.base_type_value());
}
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> operator |(must_init<T> const& lhs, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> operator |(must_init<T> const& lhs, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
return must_init<T>(lhs.base_type_value() | rhs);
}
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> operator |(ss_typename_type_k must_init<T>::value_type const& lhs, must_init<T> const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> operator |(T const& lhs, must_init<T> const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
return must_init<T>(lhs | rhs.base_type_value());
}
// operator +=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator +=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator +=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() += rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator +=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() += rhs.base_type_value();
return v;
}
// operator -=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator -=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator -=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() -= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator -=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() -= rhs.base_type_value();
return v;
}
// operator *=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator *=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator *=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() *= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator *=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() *= rhs.base_type_value();
return v;
}
// operator /=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator /=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator /=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() /= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator /=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() /= rhs.base_type_value();
return v;
}
// operator %=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator %=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator %=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() %= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator %=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() %= rhs.base_type_value();
return v;
}
// operator ^=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator ^=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator ^=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() ^= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator ^=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() ^= rhs.base_type_value();
return v;
}
// operator <<=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator <<=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator <<=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() <<= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator <<=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() <<= rhs.base_type_value();
return v;
}
// operator >>=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator >>=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator >>=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() >>= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator >>=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() >>= rhs.base_type_value();
return v;
}
// operator &=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator &=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator &=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() &= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator &=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() &= rhs.base_type_value();
return v;
}
// operator |=
template< ss_typename_param_k T
>
#ifdef STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT
inline must_init<T> const& operator |=(must_init<T> &v, ss_typename_type_k must_init<T>::value_type const& rhs)
#else /* ? STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
inline must_init<T> const& operator |=(must_init<T> &v, T const& rhs)
#endif /* STLSOFT_CF_TEMPLATE_OUTOFCLASSFN_QUALIFIED_TYPE_SUPPORT */
{
v.base_type_value() |= rhs;
return v;
}
template< ss_typename_param_k T
>
inline must_init<T> const& operator |=(must_init<T> &v, must_init<T> const& rhs)
{
v.base_type_value() |= rhs.base_type_value();
return v;
}
////////////////////////////////////////////////////////////////////////////
// Unit-testing
#ifdef STLSOFT_UNITTEST
# include "./unittest/must_init_unittest_.h"
#endif /* STLSOFT_UNITTEST */
/* ////////////////////////////////////////////////////////////////////// */
#ifndef _STLSOFT_NO_NAMESPACE
} // namespace stlsoft
#endif /* _STLSOFT_NO_NAMESPACE */
/* ////////////////////////////////////////////////////////////////////// */
#endif /* !STLSOFT_INCL_STLSOFT_UTIL_HPP_MUST_INIT */
/* ////////////////////////////////////////////////////////////////////// */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -