AMDG fmingu wrote:
But how can I change the expression to be legal and usable? bind(&std::pow,constant(-1),bind(&IIPrimemap::size,var(primemapvec))); I tried : bind(&std::pow,constant(-1.0),bind<int>(&IIPrimemap::size,var(primemapvec))); and bind(&std::pow,constant(-1.0),ret<int>(bind(&IIPrimemap::size,var(primemapvec)))); even bind(&std::pow,constant(-1.0),ll_dynamic_cast<int>(bind(&IIPrimemap::size,var(primemapvec)))); But the complier told me that: cannot resolve overloaded function `pow' based on conversion to type `unsigned int'
Ignore the "conversion to unsigned int" part. The compiler doesn't know how to handle std::pow and gets itself confused. The problem is &std::pow, not the inner bind expression.
I do not know how to solve now. Can anyone with kindness help me?
You can't pass the address of an overloaded function to a function template like bind without casting it to the correct function pointer type.
In Christ, Steven Watanabe