I am using Dev-C++ with boost 1.34.1,the program is the following:
.......................
typedef std::map<int, int> IIPrimemap;
IIPrimemap primemapvec;
# define BetaKGre2 1
# define EqualToOne 2
#define ProductOfKPrime 3
..........................
(switch_statement(_1,
case_statement<BetaKGre2>
(var(result)=0),
case_statement<EqualToOne>
(var(result)=1),
case_statement<ProductOfKPrime>
(var(result)=bind(static_cast<long double (*)(long double,int)>(std::pow),
constant(-1.0),bind(&IIPrimemap::size,var(primemapvec)))),
default_statement
( var(result)=234)
))(switchvalue);
the complier told me no errors.But the linker told me that:
nstantiated from `Arg::sig<boost::tuples::tuple<A&, B&, C&, Env&, boost::tuples::null_type, boost::tuples::null_type, boost........
instantiated from `RET boost::lambda::lambda_functor_base<boost::lambda::s................
nstantiated from `T::sig<boost::tuples::tuple<A&, boost::tuples::null_type, boost::tuples::null_type, bo...........
instantiated from here..........// indicating the line:
))(switchvalue);
And after the second compling and linking , the program passed and ran
I do not know why. And this was caused after I added the line:
(var(result)=bind(static_cast<long double (*)(long double,int)>(std::pow),
constant(-1.0),bind(&IIPrimemap::size,var(primemapvec)))),
otherwise the program do not have such problems. How can I solve it?
Can anyone with kindness help me?
200万种商品,最低价格,疯狂诱惑你