【发布时间】:2013-11-03 21:27:15
【问题描述】:
鉴于以下类型特征,我如何使用一些 std::pairs 来初始化 Fields?
template <>
struct ManagerDataTrait<Person>
{
static const std::unordered_map<std::string, std::string> Fields;
// ...
};
我尝试使用 lambda,但 Visual Studio 说 Fields 不是可以显式专门化的实体。
template <>
const std::unordered_map<std::string, std::string> ManagerDataTrait<Person>::Fields = []{
std::unordered_map<std::string, std::string> fields;
fields.insert(std::make_pair("height", "FLOAT"));
fields.insert(std::make_pair("mass", "FLOAT"));
return fields;
};
如果没有办法在特征中使用这样的静态成员,我必须使用哪些替代方法将信息存储在特征中? (Fields 持有 SQL 数据库结构。)
更新:该成员也可能是 const,但这不应该是重点。
【问题讨论】:
-
要让你的 lambda 工作,需要真正运行 lambda,但你还没有尝试这样做(你只是尝试从lambda,它是无效的,但肯定不会运行 lambda。)
标签: c++ static-members template-specialization unordered-map typetraits