Size: a a a

2020 April 25

A

Alex in pro.cxx
Max
А зачем ты хочешь побитово сравнивать float?
Ну вот опять) Потому что в compile time в С++17 по-другому не получается) Но и побитово тоже не получается.
float не может быть non-type template параметром. А integral type с таким же sizeof, как у float, может. Но тогда их нельзя сравнить в compile time.
источник

N

Neargye in pro.cxx
Alex
Ну вот опять) Потому что в compile time в С++17 по-другому не получается) Но и побитово тоже не получается.
float не может быть non-type template параметром. А integral type с таким же sizeof, как у float, может. Но тогда их нельзя сравнить в compile time.
А просто через констехпр функции не пойдет?
источник

A

Alex in pro.cxx
нет, нужно прибить значение гвоздями к типу
источник
2020 April 26

АК

Александр Караев in pro.cxx
Alex
Ну вот опять) Потому что в compile time в С++17 по-другому не получается) Но и побитово тоже не получается.
float не может быть non-type template параметром. А integral type с таким же sizeof, как у float, может. Но тогда их нельзя сравнить в compile time.
Зато можно в параметр шаблона впихнуть структуру с static constexpr float value
источник

A

Alex in pro.cxx
Да, точно, я писал такой враппер, ещё смутно вспоминал сегодня, но не вспомнил. Спс.
источник

АК

Александр Караев in pro.cxx
Alex
Да, точно, я писал такой враппер, ещё смутно вспоминал сегодня, но не вспомнил. Спс.
И кстати, можно пойти дальше и сделать статическую constexpr функцию, так обычно строки передают или что-то более сложное (упрощая макросами)
источник

АК

Александр Караев in pro.cxx
f<MAGIC(MyType(1, 2.0, false))>();
источник

A

Alex in pro.cxx
хмм
источник

A

Alex in pro.cxx
не понял, здесь шаблонный параметр - результат вызова функции? Не сама ж функция?
источник

A

Alex in pro.cxx
Можно как-то заставить это работать как задумано? https://godbolt.org/z/KHqkSJ
Я так понимаю, частичная специализация не работает таким образом, как я понадеялся?
источник

KS

Kitter Sir in pro.cxx
а не надо типы сравнивать по std::is_same?
источник

IS

Iskander Saitbatalov in pro.cxx
Kitter Sir
а не надо типы сравнивать по std::is_same?
Он пытается проверить не равенство типов, а возможно ли их сравнить при помощи оператора ==.
источник

v

vehlwn in pro.cxx
Alex
Можно как-то заставить это работать как задумано? https://godbolt.org/z/KHqkSJ
Я так понимаю, частичная специализация не работает таким образом, как я понадеялся?
При любой специализации количество шаблонных параметров после template  должно быть меньше количества параметров после имени класса.
источник

v

vehlwn in pro.cxx
Это не специализация, а какая-то перегрузка.
источник

v

vehlwn in pro.cxx
Зачем тебе зависимый воид и зависимый труе, когда есть void_t? https://en.cppreference.com/w/cpp/types/void_t
источник

v

vehlwn in pro.cxx
vehlwn
Это не специализация, а какая-то перегрузка.
Ну да. В этой строке он выбрал версию с 2 параметрами
is_equal_comparable<L, R>::value
потому что тут нет специализаций.
источник

v

vehlwn in pro.cxx
vehlwn
Ну да. В этой строке он выбрал версию с 2 параметрами
is_equal_comparable<L, R>::value
потому что тут нет специализаций.
Почему эта конструкция однозначна? Есть же шаблон с тремя параметрами, где третий по умолчанию.
источник

IS

Iskander Saitbatalov in pro.cxx
Все это уже давным давно протоптанная дорога. Нет смысла изобретать велосипед. Хотя если в академических целях)
источник

v

vehlwn in pro.cxx
Iskander Saitbatalov
Все это уже давным давно протоптанная дорога. Нет смысла изобретать велосипед. Хотя если в академических целях)
На вопрос отвечает @h4cktill
источник

v

vehlwn in pro.cxx
template<class A, class B, class = int>
struct fuu : std::true_type {};

template<class A, class B>
struct fuu<A, B> : std::false_type {};

Это похоже на явную специализацию. Только чем мы специализируем fuu? Это законно использовать те же самые параметры после имени класса?
источник