【发布时间】:2015-10-11 23:28:17
【问题描述】:
我想将CRTP pattern 与一些锁定机制结合使用,以在多线程环境中进行访问同步。
我的代码如下所示:
//-- CRTP base class with some sync/lock mechanism
template<typename T, typename SYNC>
struct Base {
static std::unordered_map<int, std::string> s_map;
static SYNC s_sync;
};
//-- derived class using CRTP
template<typename SYNC>
struct ProductX : public Base<ProductX<SYNC>, SYNC> {};
//-- static initialisation
template<typename SYNC>
std::unordered_map<int, std::string> Base<ProductX<SYNC>, SYNC>::s_map {
{ 1, "value_1" },
{ 2, "value_2" }
}
但是我得到了
错误:非模板
std::unordered_map<int, std::basic_string<char> > Base<ProductX<SYNC>, SYNC>::s_map的模板定义
编译时。
静态s_map 初始化引发错误。有人可以指出我做错了什么吗?
【问题讨论】:
-
@Deduplicator - 这不是您标记的内容的副本。如果某些东西重复,那么这个:stackoverflow.com/questions/13404695/…
标签: c++ templates generic-programming crtp