I am trying to make a tensor class which takes advantage of but I am getting a compilation error. ```cpp #include #include template class _tensor_expression { public: static constexpr bool is_leaf = false; },; template class tensor : public _tensor_expression> { public: tensor(std::array shape) { _surface = 1; for (std::size_t i = N; i--;) { _shape[i] = shape[i]; _stride[i] = _surface; _surface *= shape[i]; }, _data = new float[_surface]; }, template tensor(_tensor_expression const& expression) { // for (std::size_t i = 0; i _shape; std::array _stride; std::size_t _surface; },; int main(void) { tensor a({2, 2},), b({2, 2},); tensor c(b); return 0; }, ``` ``` + g++ -Wall -Wextra -pedantic -std=c++20 -o build main.cpp main.cpp: In function int main(): main.cpp:160:22: error: use of deleted function tensor::tensor(const tensor&) [with long unsigned int N = 2] 160 | tensor c(b); | ^ main.cpp:140:9: note: declared here 140 | tensor(const tensor&) = delete; | ^~~~~~ ``` I would like compiler to call the `tensor(_tensor_expression const& expression)`
it seems like what you actually want is to forward those calls, instead of deleting them