Пытаюсь вывести тип результата одной функции и подставить его в аргумент другой + добавить ссылку:
struct A {
auto foo(int) const {
return 42;
}
void bar(std::result_of_t<decltype(foo(int{}))>& i) {}
};
Однако получаю много ошибок компиляции. Как сделать правильно для любого типа результата (не только int
)?
auto foo(int) const {
return 42;
}
это уже сразу С++14, но не С++11.
При этом дедукция типа auto
будет выполнена только после завершения определения класса, по каковой причине определить возвращаемый тип foo
внутри определения класса не получится (если не рассматривать внутренность тел методов).
Если вы явно укажете тип
auto foo(int) const -> int {
return 42;
}
то будет работать
void bar(std::result_of_t<decltype(&A::foo)(A, int)>& i) {}
Попытка сделать
void bar(decltype(foo(int{}))>& i) {}
не пройдет, потому что ссылаться на foo
без объекта в этом месте запрещается. А "потенциальный" вариант
void bar(decltype(std::declval<A>().foo(int{}))>& i) {}
не проходит из-за незавершенности типа A
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В функции main я создаю вектор pТеперь мне необходимо передать его в функцию
Всем приветПишу для себя программу, которая шифрует мои файлы алгоритмом AES-256
Как узнать, сколько чисел представимо данным типом, кроме std::pow(2, sizeof(type)*8)?