«Функция с выведенным типом возврата не может быть использована до того, как она будет определена» при использовании шабC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 «Функция с выведенным типом возврата не может быть использована до того, как она будет определена» при использовании шаб

Сообщение Anonymous »

Я сталкиваюсь с проблемой со специализацией шаблона функций и вычетом типа возврата в C ++. Следующий минимальный пример предназначен для демонстрации проблемы (https://godbolt.org/z/wt1prnfh6):

Код: Выделить всё

#include 

// Forward declaration of construct, using return type deduction
template 
auto construct(Args... args);

// Specialization for Version 1 – takes const reference
template 
auto construct(const std::optional& o) {
return 0;
}

// Specialization for Version 2 – takes by value
template 
auto construct(std::optional o) {
return 0;
}

int main() {
std::optional o;

construct(o);    // fails
construct(o);    // works
return 0;
}
ошибка компилятора:

Код: Выделить всё

error: function 'construct' with deduced return type cannot be used before it is defined
Вызов для конструкции (o) не сбои, в то время как Construct (O) работает. Из того, что я понимаю, это связано с выводом возврата функции после Компилятор видит вызов, и потому что конструкция еще не была полностью определена, его нельзя использовать.
Мои вопросы:
  • phostra> phode> phod> phod>, но и Code, но
phopuct

Подробнее здесь: https://stackoverflow.com/questions/797 ... d-when-usi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»