template class NodeListWithLock { private: T _data; std::mutex _mux; public: NodeListWithLock _next; public: NodeListWithLock(T data); T data(); void lock_node(); void unlock_node(); }; ... template void NodeListWithLock::lock_node() { this->_mux.lock(); } template void NodeListWithLock::unlock_node() { this->_mux.unlock(); }