Я экспериментирую с decltype(auto) в пользовательском шаблоне вызываемого класса, который упрощает поведение std::function. Моя цель — сохранить точный тип возвращаемого значения, включая такие квалификаторы, как константность, ссылка и т. д., вызываемого объекта при его вызове. Вот очень упрощенная версия класса.
P.S.: C++ использует R вместо decltype(auto):
https://en.cppreference.com/w/cpp/utili ... operator()
Мне интересно, могу ли я использовать decltype(auto) с тем же эффектом, что и R
template
class Callable;
template
class Callable
{
public:
template
Callable(F&& f) : func(std::forward(f)) {}
decltype(auto) operator()(Args... args) {
return func(std::forward(args)...);
}
private:
std::decay_t func;
};
Подробнее здесь: https://stackoverflow.com/questions/791 ... s-template
Мобильная версия