Wie zum initialisieren einer statischen std::unordered_map von einer Art Eigenschaft?

Gegeben, die folgende Eigenschaft, wie kann ich die initialisieren Fields mit einigen std::pairs?

template <>
struct ManagerDataTrait<Person>
{
    static const std::unordered_map<std::string, std::string> Fields;
    //...
};

Versuchte ich mit einem lambda aber Visual Studio sagt, dass Fields ist nicht eine Entität, die explizit darauf spezialisiert.

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-Mitglieder wie folgt in Merkmale, welche alternativen habe ich, die Informationen zu speichern in einer Eigenschaft? (Fields hält eine SQL-Datenbank-Struktur.)

Update: Das Mitglied kann auch const aber das sollte nicht der Punkt sein.

  • Für Ihren lambda etwas arbeiten müssten, um tatsächlich laufen die lambda, aber Sie haben nicht versucht, das zu tun (Sie haben nur versucht zu konstruieren, die hash-map aus dem lambda, das ist nicht gültig, aber sicherlich nicht die lambda.)
InformationsquelleAutor danijar | 2013-11-03
Schreibe einen Kommentar