std :: bind теряет ссылку при доставке как ссылка на значение
У меня есть следующий код:
#include
#include
template
auto callback(T&& func) ->decltype(func())
{
return func();
}
double test(double& value)
{
value=value+1.0;
return value;
}
int main(void)
{
double t=1.0;
printf("%f\n",t);
test(t);
printf("%f\n",t);
callback(std::bind(test,t));
printf("%f\n",t);
}
И это выводит
1.000000
2.000000
2.000000
Что подразумеваетcallback
функция получила копиюt
вместо ссылки наt
, Мне интересно, что случилось, так как дляstd::bind
это должно быть совершенным пересылкой.