2016-04-11 8 views
1

Wenn eine Funktion erwartet wird, Parameter eines Containertypen akzeptieren (oder alles, was implizit durch ein initializer_list initialisiert werden kann, wieEclipse-CODAN Unterstützung für C++ 11 Initialisiererliste als Funktionsparameter

void someFunc(std::vector<int> args); 

Und in die anrufende Seite, wird im folgenden Code als errornous markiert

someFunc({1,2,3}); 

die eclipse CDT-Parser (auch bekannt als CODAN) hält den Funktionsaufruf als invalid arguments und die CDT-Version ist bereits spätestens ein (8.8.1).

Gibt es eine Problemumgehung, um den Fehler zu unterdrücken? Es ist keine gute Lösung, die ganze Gruppe von ungültigen Argument Fällen zu unterdrücken.

Antwort

0

Wie wäre es, es explizit zu machen? someFunc(static_cast<std::vector<int> >({1,2,3}));

+0

ops, das ist unordentlicher – Fei

+0

Messy, aber sicher. Der Compiler sollte Fehler finden. – rsjaffe

+0

FWIW, 'static_cast' funktionierte nicht für mich (Kodan mochte es nicht und' gcc 5.4' auch nicht. C-Style-Cast funktionierte jedoch, wie zum Beispiel: 'someFunc ((static_cast >) {1,2,3}); ' – BeeOnRope

Verwandte Themen