Bei der folgenden Typeigenschaft, wie kann ich Fields
mit einigen std::pair
s initialisieren?Wie initialisiert man eine statische std :: unordered_map eines Typmerkmals?
template <>
struct ManagerDataTrait<Person>
{
static const std::unordered_map<std::string, std::string> Fields;
// ...
};
Ich habe versucht, ein Lambda aber Visual Studio sagt mit, dass Fields
keine Einheit ist, die explizit spezialisiert werden kann.
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;
};
Wenn es keine Möglichkeit gibt, statische Elemente wie dies in Züge zu verwenden, die Alternativen kann ich die Informationen in einem Zug speichern haben? (Fields
hält eine SQL-Datenbankstruktur.)
Update: Das Mitglied könnte auch const
sein, aber das sollte nicht der Punkt sein.
Für Ihr Lambda etwas arbeiten müßte, um tatsächlich das Lambda _run_, aber Sie haben nicht versucht zu tun (Sie haben gerade versucht, die Hash-Map aus dem Lambda zu konstruieren, das nicht gültig ist, aber das Lambda nicht ausführt.) –