In Ordnung, das ist eine dumme Frage.
Vielen Dank, dass Sie mir helfen, die Frage zu bearbeiten.
Es ist ganz in Ordnung, dass Sie sowohl initializer_list als auch Parameterpack verwenden.
Zum Beispiel hat std :: vector einen Konstruktor, der initializer_list und allocator akzeptiert.
Und ich getestet, das scheint die Antwort.
std::variant<std::vector<int,std::allocator<int>>> v(std::in_place_index<0>,{1,2,3,4},std::allocator<int>());
for(int i: std::get<0>(v))
{
std::cout<<i<<std::endl;
}
Und es gibt eine andere Frage, warum initializer_list speziell von anderen Vorlagenargumenten getrennt werden muss. Ich denke, ich kann es irgendwo anders finden.
Die von Ihnen verlinkte Seite enthält ein Beispiel. – chris
Ich nehme an, Sie sprechen über das Beispiel von st :: optional? // ruft std :: string auf (initializer_list) Konstruktor std :: optional o4 (std :: in_place, {'a', 'b', 'c'}); Sicher, es ist in Ordnung. Aber ich frage mich, warum es ein "Args ..." gibt, nach initializer_list. Ich meine, nur Args .. ist in Ordnung, nur initializer_list ist ok, warum beides? –
ZhangFengze
"* Warum beide *" ist nicht die gleiche Frage wie "* Wie man es benutzt *", die eine offensichtliche Antwort hat. Ich schlage vor, dass Sie neu formulieren, um zu fragen, was Sie eigentlich wissen möchten. – StoryTeller