Используйте тип возврата Decktype (Auto), чтобы иногда возвращать ссылкиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Используйте тип возврата Decktype (Auto), чтобы иногда возвращать ссылки

Сообщение Anonymous »

У меня есть следующий код, чтобы нормализовать std :: fileystem :: path , чтобы всегда использовать прямые черты в качестве разделителей:

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

static decltype(auto) fix_path_separator(const std::filesystem::path& path) {
if constexpr (std::filesystem::path::preferred_separator == '/') {
return path;
} else {
return std::filesystem::path{ path.generic_string() };
}
}
Я использую decktype (auto) Поскольку в системах Posix я хочу, чтобы эта функция была NOOP и возврата аргумента в качестве ссылки без создания копии, но для Windows мне нужна копия для изменения сепараторов. Этот код, по -видимому, работает, и я имею static_assert ', что он действительно возвращает Const Path & на posix и path в Windows, но я не совсем уверен, как он выведен. Но для Windows мне кажется, что я возвращаю путь && в качестве неназванного временного, а не пути .
может кто -нибудь предоставить мне правила вывода Decltype (Auto) , которые применяются здесь?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... references
Ответить

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

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

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

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

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