Wenn ich im Beispiel unten 4 nicht als vorzeichenlos werfe, erhalte ich eine Warnung über '< =' signed/unsigned mismatch in default.hpp (144) gefolgt von vielen weiteren Warnungen, denen ich nicht folge.Warum muss ich bei einem Vergleich eine nicht signierte Zahl werfen, um Warnungen zu vermeiden
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <string>
namespace qi = boost::spirit::qi;
typedef std::wstring::const_iterator it_type;
int main()
{
using qi::_1;
using boost::spirit::_pass;
std::wstring testChar(L"450");
auto f = testChar.begin(), l = testChar.end();
unsigned pVal[2] = {0, 0};
qi::uint_parser<unsigned, 10, 1, 1> uint1_p;
bool retVal = qi::parse(f, l, uint1_p[_pass = _1 <= (unsigned)4] >> qi::uint_, pVal[0], pVal[1]);
return 0;
}
Ist es am besten, in diesem Fall immer zu werfen?
Aufbauend auf Visual Studio 2015 mit Boost-1.61.0