|
Boost Users : |
From: ope (ope-devel_at_[hidden])
Date: 2008-02-20 14:17:59
Hi,
I've the following code:
---8<---
#include <boost/variant.hpp>
#include <iostream>
#include <string>
struct available
: public boost::static_visitor<bool>
{
template <typename T, typename U>
bool operator()( const T&, const U& ) const
{
return false; // cannot compare different types
}
template <typename T>
bool operator()( const T& lhs, const T& rhs ) const
{
static const std::string NA( "NA" );
return lhs != NA; //???
}
};
using namespace boost;
using namespace std;
int main()
{
variant< double, std::string > R;
variant< double, std::string > L;
R = 3.14;
L = "NA";
cout << R << endl;
cout << L << endl;
bool r = boost::apply_visitor(available(), R );
cout << ( r ? "true" : "false" ) << endl;
bool l = boost::apply_visitor(available(), L );
cout << ( l ? "true" : "false" ) << endl;
}
--->8---
which does not compile. Anyway, from a data parser I get a double or a
"NA" (not available) string. This test shall handle both cases. To
process using the double I have to check if it available (than use
defaults). Unfortunately, the static_visitor<bool> needs two arguments.
How can I get the syntax (or simpler) as used in the example?
Thanks
Olaf
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net