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

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

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

16 ответов

20 просмотров

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&, тогда такой тип выведеться

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта