#include "buf_xpr.h" namespace CNORXZ { template BufXpr::BufXpr(const BufXpr& in) : mBuf(in.mBuf), mIXprF(in.mIXprF), mIXpr(mIXprF(mBuf)) {} template BufXpr::BufXpr(BufXpr&& in) : mBuf(std::move(in.mBuf)), mIXprF(std::move(in.mIXprF)), mIXpr(mIXprF(mBuf)) {} template BufXpr& BufXpr::operator=(const BufXpr& in) { mBuf = in.mBuf; mIXprF = in.mIXprF; mIXpr = mIXprF(mBuf); return *this; } template BufXpr& BufXpr::operator=(BufXpr&& in) { mBuf = std::move(in.mBuf); mIXprF = std::move(in.mIXprF); mIXpr = mIXprF(mBuf); return *this; } template constexpr BufXpr::BufXpr(IXprF&& ixprf) : mIXprF(std::forward(ixprf)), mIXpr(mIXprF(mBuf)) {} template template inline decltype(auto) BufXpr::operator()(const PosT& last) const { mIXpr(last); return mBuf; } template inline decltype(auto) BufXpr::operator()() const { mIXpr(); return mBuf; } template template inline decltype(auto) BufXpr::rootSteps(const IndexId& id) const { return mIXpr.rootSteps(id); } template constexpr decltype(auto) bufxpr(IXprF&& ixprf) { return BufXpr( std::forward(ixprf) ); } }