<segment_tree.hpp>
#include<vector>
    #include<functional>
    namespace dodam{
        template<typename T> using Operator_type = std::function<T(T, T)>;
    
        template<typename T=int>
        class SegmentTree{
            public:
                explicit SegmentTree() = delete;
                explicit SegmentTree(const size_t& size, const Operator_type<T>& op);
                explicit SegmentTree(const size_t& size, Operator_type<T>&& op = std::plus<T>{});
                explicit SegmentTree(const SegmentTree<T>& obj);
                explicit SegmentTree(SegmentTree<T>&& obj);
                ~SegmentTree();
                SegmentTree& operator=(const SegmentTree<T>& obj);
                SegmentTree& operator=(SegmentTree<T>&& obj);
            private:
                std::vector<T> tree;
                size_t size;    
                Operator_type<T> op;
        };
    };
<segment_tree.cpp>
#include"segment_tree.hpp"
#include<vector>
#include<functional>
#include<algorithm>
#include<memory>
using namespace dodam;
template<typename T>
SegmentTree<T>::SegmentTree(const size_t& size, Operator_type<T>&& op):tree(std::vector<T>(4*size+1)),size(size), op(std::move<Operator_type<T>>(op)){}
template<typename T>
SegmentTree<T>::SegmentTree(const size_t& size, const Operator_type<T>& op):tree(std::vector<T>(4*size+1)), size(size), op(op){}
template<typename T>
SegmentTree<T>::SegmentTree(const SegmentTree<T>& obj):tree(obj.tree),size(obj.size),op(obj.op){}
template<typename T>
SegmentTree<T>::SegmentTree(SegmentTree<T>&& obj):tree(std::move(obj.tree)),size(obj.size),op(std::move(obj.op)){}
template<typename T>
SegmentTree<T>::~SegmentTree()=default;
template<typename T>
SegmentTree<T>& SegmentTree<T>::operator=(const SegmentTree<T>& obj){
    tree = obj.tree;
    size = obj.size;
    op = obj.op;
    return *this;
}
template<typename T>
SegmentTree<T>& SegmentTree<T>::operator=(SegmentTree<T>&& obj){
    tree = std::move(obj.tree);
    size = obj.size;
    op = std::move(obj.op);
    return *this;
}
I think I wrote all methods in cpp correctly.
But, Trying to make result, I recieved this error message.
I don't know why this happen..
What I miss?
Anyone help me?
Compiler : Clang++12