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

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

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

16 ответов

12 просмотров

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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта