Я хочу создать шаблонную функцию, которая будет гибкой и может принимать как rvalue, так и lvalue.Вот как я это написал:
template<typename T>
decltype(auto) normalize_pose(T&& pose)
{
if (pose > 2 * M_PI) return std::forward<T>(pose - 2* M_PI);
}
Итак, я дважды проверил функцию, и она мне кажется правильной.Тогда я решил проверить это и написал:
int a = 2;
auto test = factorgraph::normalize_pose(a);
Я получаю эту ошибку:
error: use of ‘decltype(auto) factorgraph::normalize_pose(T&&) [with T = int&]’ before deduction of ‘auto’
Если я пытаюсь добавить <int>
, я получаю ошибку, что такой функции нетесть.