Boost Users :
From: Nat Goodspeed (nat_at_[hidden])
Date: 2008-05-22 16:31:10
> I want to make a functor which uses automatically an reference type if
> the provided value isn't a pointer.
> Now the only thing that I don't like very much is that the user has to
> provide the template argument for setter. Is there some possibility to
> solve it that the template argument is automatically deduced?
> Important is that I have to possible calls one when the value is
> provided as value -> I need to have a reference parameter and the other
> is when a pointer is provided.
The following works for me:
void Set(const std::string& newVal, Value* pVal)
*pVal = boost::lexical_cast<Value>(newVal);
void Set(const std::string& newVal, Value& refVal)
refVal = boost::lexical_cast<Value>(newVal);
int main(int argc, char *argv)
std::cout << "Set(Value*) produced " << target << '\n';
std::cout << "Set(Value&) produced " << target << '\n';
If you want those overloaded template free functions to forward to a
functor, that should be fine too: as you see, inside them you can
explicitly name the inferred type.
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