Есть ли способ поместить функцию с «Auto` -выведенным типом возврата в свой собственный файл» (библиотека объектного кодC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ поместить функцию с «Auto` -выведенным типом возврата в свой собственный файл» (библиотека объектного код

Сообщение Anonymous »

Может быть довольно полезно оставить возвратный тип функции C ++ не определена, когда тип возврата однозначно. Ключевое слово. < /p>
Например, функция ниже имеет однозначный тип возврата. Нет реальной необходимости указывать тип более одного раза. < /P>

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

auto example_function() {

// This could also be written as
//
// `return 1;`
//
// 1 is of type `int`.
// It can be made even more explicit with a type cast,
// if you so desire, or provide a variable with an explicit
// type as shown below.

int i = 1;

return i;
}
< /code>
предпочтительно оставить компилятор, чтобы вывести тип возврата в таких простых случаях. Если тип возврата изменяется, его необходимо изменить только в одном месте, а не в нескольких местах.auto
) Тип возврата вызывается из того же файла .cpp . (Другими словами, он используется из одного и того же блока перевода /файла кода объекта.) /code> файл, тип вычет больше не работает. < /p>

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

g++-14 -std=c++23
предоставляет следующее сообщение об ошибке:

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

error: use of `auto create_server_fd(int)` before deduction of `auto`
Вот соответствующая функция, которая находится в файле с именем create_server_fd.cpp .

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

#include "create_server_fd.hpp"

auto create_server_fd(const int server_port) {
// do some work to create `fd`
int fd = 10; // example
return fd;
}
Файл заголовка содержит только прямое объявление функции. EM> Уметь выяснить, какой тип Auto должен принять в возвратном значении. Действительно, кажется, что этот исходный файл успешно составлен. > Определение этого.

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

// main.cpp

#include "create_server_fd.hpp"

int main() {

const auto server_fd = create_server_fd(100); // example
}
< /code>
Должно ли это работать? Может ли компилятор не осмотреть код объекта создать из компиляции comply_server_fd.cpp 
и скопировать через тип возврата?
Если это нельзя заставить работать, что больше разумная вещь, чтобы исправить это?

Подробнее здесь: https://stackoverflow.com/questions/794 ... to-its-own
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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