#ifndef __cxz_xpr_base_cc_h__ #define __cxz_xpr_base_cc_h__ #include "xpr_base.h" namespace CNORXZ { /************ * VXpr * ************/ template VXpr::VXpr(const XprInterface& a) : Xpr(a.THIS()) {} template Uptr> VXpr::copy() const { return std::make_unique>(*this); } template T VXpr::vexec(const DPos& last) const { return (*this)(last); } template T VXpr::vexec() const { return (*this)(); } template DPos VXpr::vrootSteps(const IndexId<0>& id) const { return DPos(this->rootSteps(id)); } /************ * DXpr * ************/ template template DXpr::DXpr(const Xpr& a) : ObjHandle>(std::make_unique>(a)) {} template inline T DXpr::operator()(const DPos& last) const { return VB::mC->vexec(last); } template inline T DXpr::operator()() const { return VB::mC->vexec(); } template template inline DPos DXpr::rootSteps(const IndexId& id) const { return VB::mC->vrootSteps(IndexId<0>(id.id())); } } #endif