xieite::mixfix {}

Defined in header <xieite/fn/mixfix.hpp>

#


Definitions

#0
template<typename>
struct mixfix;

#1
template<typename Ret, typename Arg>
struct mixfix<Ret(Arg)> : xieite::fn<Ret(Arg)> {
	using xieite::fn<Ret(Arg)>::fn;

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator->*(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator->*(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator/(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator/(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator%(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator%(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator+(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator+(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator-(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator-(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator<<(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator<<(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator>>(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator>>(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator<=>(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator<=>(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator<(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator<(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator<=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator<=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator>(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator>(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator>=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator>=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator==(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator==(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator!=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator!=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator&(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator&(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator^(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator^(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator|(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator|(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator&&(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator&&(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator||(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator||(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator*=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator*=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator/=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator/=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator%=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator%=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator+=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator+=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator-=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator-=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator<<=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator<<=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator>>=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator>>=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator&=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator&=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator^=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator^=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator|=(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator|=(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	constexpr decltype(auto) operator,(this auto&&, ArgRef&&) noexcept(false);

	template<std::convertible_to<Arg> ArgRef>
	friend constexpr decltype(auto) operator,(ArgRef&&, const xieite::mixfix<Ret(Arg)>&) noexcept(false);
};

#2
template<typename Ret, typename Arg0, typename Arg1>
struct mixfix<Ret(Arg0, Arg1)> : xieite::fn<Ret(Arg0, Arg1)> {
	using xieite::fn<Ret(Arg0, Arg1)>::fn;

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator->*(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator/(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator%(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator+(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator-(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator<<(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator>>(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator<=>(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator<(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator<=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator>(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator>=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator==(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator!=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator&(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator^(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator|(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator&&(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator||(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator*=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator/=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator%=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator+=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator-=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator<<=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator>>=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator&=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator^=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator|=(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);

	template<std::convertible_to<Arg0> ArgRef0>
	friend constexpr decltype(auto) operator,(ArgRef0&&, const xieite::mixfix<Ret(Arg0, Arg1)>&) noexcept(false);
};


Example #


			
Output: #

			
[View in Compiler Explorer] #