170 похожих чатов

Как можно перегрузить шаблон функции, чтобы для легких типов (int,

double, T*) передавать в функцию копирование, а для самописных типов - передавать по ссылке?

16 ответов

18 просмотров

https://en.cppreference.com/w/cpp/types/is_fundamental

sfinae, ну или концепты, если у вас модный компилятор

Denis P
sfinae, ну или концепты, если у вас модный компиля...

template<typename T> concept Fundamental = std::is_fundamental_v<T>; template<typename T> void f(const T&) {} void f(Fundamental auto v) {}

Artyom-Vorobyov Автор вопроса
Denis P
template<typename T> concept Fundamental = std::is...

Нет, у меня С++17. Но логику понял

Artyom Vorobyov
Нет, у меня С++17. Но логику понял

template<typename T, std::enable_if_t<std::is_fundamental_v<T>>* = nullptr> using Fundamental = T; template<typename T, std::enable_if_t<!std::is_fundamental_v<T>>* = nullptr> using NotFundamental = T; template<typename T> void f(const NotFundamental<T>&) {} template<typename T> void f(Fundamental<T>) {} )

Artyom-Vorobyov Автор вопроса
Denis P
template<typename T, std::enable_if_t<std::is_fund...

А что значит вот это выражение std::enable_if_t<std::is_fundamental_v<T>>* = nullptr ?

Artyom-Vorobyov Автор вопроса
Denis P
sfinae

спасибо, пойду читать)

Denis P
template<typename T, std::enable_if_t<std::is_fund...

Я бы, наверное, ещё для всех is_trivially_copyable_v + is_trivially_destructible_v, которые меньше некоторого размера, позволял копирование

Ofee Oficsu
Я бы, наверное, ещё для всех is_trivially_copyable...

ну я концепцию показал) там fundamental не то чтобы хорошо подходит

Artyom-Vorobyov Автор вопроса
Denis P
template<typename T, std::enable_if_t<std::is_fund...

Ещё вопрос. 1. А как я могу специализировать шаблон для типа const char *? 2. Это всё делается, чтобы можно было передать в функцию f("hello") и запихнуть параметр в variant<int, string>. Если не преобразовывать, то не кладется в string. Может я не так делаю?

Artyom-Vorobyov Автор вопроса

А какой тогда?

Это не так

Artyom-Vorobyov Автор вопроса

Если мы передаём в шаблон как T&, тогда такой тип выведеться

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Карта сайта