J'essaie d'utiliser Boost.Sprit x3 pour faire correspondre une séquence de deux entiers dans un std::pair<int, int>
. A en juger par la documentation, le code suivant doit compiler:Correspondance d'une séquence de deux entiers dans une paire `std :: <int, int>`
#include <string>
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/home/x3.hpp>
int main()
{
using namespace boost::spirit::x3;
std::string input("1 2");
std::pair<int, int> result;
parse(input.begin(), input.end(), int_ >> int_, result);
}
Cependant, il correspond seulement au premier entier. Si je change std::pair<int, int> result;
en int result;
puis que j'imprime result
, j'obtiens 1
comme sortie.
Pourquoi cela se produit-il? int_ >> int_
n'est pas la bonne façon de définir un analyseur qui correspond à (et définit comme attributs) deux entiers?
Il semble que vous ayez besoin d'inclure l'en-tête Boost.Fusion approprié qui adapte 'std :: pair'. –
@ T.C .: oui, cela a résolu le problème. Merci! Postez votre commentaire en réponse et je l'accepterai. –