Bonjour,
Sur un exemple aussi simple :
J'ai 6 beaux warning avec Visual Express :
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
21
22
23
24
25
26
27 #include <iostream> #include <string> #include <boost/variant.hpp> struct mon_visiteur :boost::static_visitor<void> { void operator()(int i_)const { std::cout<<"un entier de valeur "<<i_<<std::endl; } void operator()(std::string str_)const { std::cout<<"une chaine de valeur "<<str_<<std::endl; } }; int main() { boost::variant<int,std::string> un_entier_ou_une_chaine; un_entier_ou_une_chaine=1; boost::apply_visitor(mon_visiteur(),un_entier_ou_une_chaine); un_entier_ou_une_chaine = "tutu"; boost::apply_visitor(mon_visiteur(),un_entier_ou_une_chaine); return 0; }
Visiblement, il ne sait pas construire l'opérateur d'assignement par défaut (du moins, si mon anglais n'est pas trop bancal).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 warning C4512: 'boost::detail::variant::direct_assigner<T>' : assignment operator could not be generated warning C4512: 'boost::detail::variant::invoke_visitor<Visitor>' : assignment operator could not be generated warning C4512: 'boost::detail::variant::direct_assigner<T>' : assignment operator could not be generated warning C4512: 'boost::variant<T0_,T1>::assigner' : assignment operator could not be generated warning C4512: 'boost::detail::variant::invoke_visitor<Visitor>' : assignment operator could not be generated warning C4512: 'boost::detail::variant::invoke_visitor<Visitor>' : assignment operator could not be generated
Question : Qu'est-ce que cela peut avoir comme conséquence ?
Question bis: comment je peux virer ces warning (à part un brutal pragma disable).
Il ne me semble rien avoir vu à ce sujet sur le site de boost.
Partager