$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Bruno Martínez (br1_at_[hidden])
Date: 2005-09-14 19:35:51
On Mon, 12 Sep 2005 23:31:52 -0300, Bruno Martínez <br1_at_[hidden]>
wrote:
> Hi.
>
> When using pointers to functions with bind, the particular function
> doesn't play a part in the return value's type of bind. That is
>
> void func1();
> void func2();
>
> typeid(boost::bind(&func1)) == typeid(boost::bind(&func1)) // this is
> true
I've made some progress. What I have now looks like:
template <class T, T&>
struct nontypeadapt;
template<class Ret, Ret (&func)()>
struct nontypeadapt <Ret(), func> {
typedef Ret result_type;
Ret operator() () { return func(); }
};
then
typeid(boost::bind(nontypeadapt<void(), func1>())) !=
typeid(boost::bind(nontypeadapt<void(), func2>()))
However, the signature has to be given at the call site, it's repetitive
to define all specializations of nontypeadapt, and it brings more
forwarding problems of it's own. Any ideas?
Bruno