Bonjour tout le monde,
voilà je me remet au C++ après des années de sommeil
J'étais en train de faire des tests sur des variadic templates et je me suis demandé s'il y avait possibilité d'itérer plus "modernement" sur la liste des arguments d'une variadic function qu'avec les fonctions de la SL :
Le compilateur me répond que je fais une mauvaise utilisation de "ts..." car, je cite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <vector> template <class T> class A { private : std::vector<T> v; public : A(T& ts...); }; template <class T> A<T>::A(T& ts...) { std::vector<T> temp = { ts... }; for (auto t : temp) v.push_back(t); }:
N'y a-t'il pas une manière plus ou moins aussi élégante de parcourir ce type de liste ?||=== Build: Debug in POO (compiler: GNU GCC Compiler) ===|
POO\main.cpp||In constructor 'A<T>::A(T&, ...)': |
POO\main.cpp|32|error: expansion pattern 'ts' contains no argument packs|
POO\main.cpp||In instantiation of 'A<T>::A(T&, ...) [with T = int]': |
POO\main.cpp|40|required from here|
main.cpp|32|error: could not convert '{<expression error>}' from '<brace-enclosed initializer list>' to 'std::vector<int, std::allocator<int> >'|
||=== Build failed: 2 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|
Merci d'avance
Partager