Часто у меня будет шаблонная функция, в которой я пытаюсь передать тип &&. Проблема в том, что если в качестве аргумента указать std :: move, я получу такую ошибку:
error: no matching function for call to 'doThing(void (*)(int&&), std::remove_reference<int&>::type)'
Код, сгенерировавший эту конкретную ошибку, выглядит следующим образом:
#include <utility>
template<typename T>
void doThing(void (*thing)(T), T input)
{
thing(input);
}
void exampleThing(int&& someData)
{someData++;}
int main()
{
int x, y = 5;
exampleThing(std::move(x)); //compiles fine
doThing(&exampleThing, std::move(y)); //error as shown above
}
Итак, как мне передать аргумент шаблону как ход?