double, T*) передавать в функцию копирование, а для самописных типов - передавать по ссылке?
https://en.cppreference.com/w/cpp/types/is_fundamental
sfinae, ну или концепты, если у вас модный компилятор
template<typename T> concept Fundamental = std::is_fundamental_v<T>; template<typename T> void f(const T&) {} void f(Fundamental auto v) {}
Нет, у меня С++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>) {} )
А что значит вот это выражение std::enable_if_t<std::is_fundamental_v<T>>* = nullptr ?
спасибо, пойду читать)
Я бы, наверное, ещё для всех is_trivially_copyable_v + is_trivially_destructible_v, которые меньше некоторого размера, позволял копирование
ну я концепцию показал) там fundamental не то чтобы хорошо подходит
Ещё вопрос. 1. А как я могу специализировать шаблон для типа const char *? 2. Это всё делается, чтобы можно было передать в функцию f("hello") и запихнуть параметр в variant<int, string>. Если не преобразовывать, то не кладется в string. Может я не так делаю?
А какой тогда?
Это не так
Да ну?
Если мы передаём в шаблон как T&, тогда такой тип выведеться
Обсуждают сегодня