2009/3/17 Sandeep Gupta
<gupta.sandeep@gmail.com>
Hi,
Both the statements below bind function buildPair. While the first
works the other fails. What could be a possible fix. Thanks in
advance.
//---- Function to be used by bind -------------------------
template<typename X, typename Y>
std::pair<X, Y> buildPair(X x, Y y)
{
std::pair<X,Y> apair(x,y);
return apair;
}
(std::cout<<buildPair(_1,_2).first<<' ')(1,2); ///--compiles fine---------
This one does not bind buildPair, it evaluates buildPair immediately. This line of code is equivalent to
(std::cout<<_1<<' ')(1,2);
(bind(buildPair,_1,_2))(3,5); ///-fails------------
You should specify template arguments for buildPair.
(bind(buildPair<int, int>,_1,_2))(3,5);