Size: a a a

2020 August 06

D

Danya in pro.cxx
Konstantin Osipov
Можете пожалуйста объяснить как это работает:
template<class> inline constexpr bool always_false_v = false;
Взято вот отсюда:
https://en.cppreference.com/w/cpp/utility/variant/visit
Тут лучше уточнить что именно непонятно
источник

D

Dmitry in pro.cxx
Нулевой указатель не указывает на объект, для него нет разыменования.
источник

D

Danya in pro.cxx
Konstantin Osipov
Можете пожалуйста объяснить как это работает:
template<class> inline constexpr bool always_false_v = false;
Взято вот отсюда:
https://en.cppreference.com/w/cpp/utility/variant/visit
always_false_v - это шаблон constexpr inline переменной типа bool, который вне зависимости от своего шаблонного параметра всегда false
источник

ПК

Побитый Кирпич... in pro.cxx
Konstantin Osipov
Можете пожалуйста объяснить как это работает:
template<class> inline constexpr bool always_false_v = false;
Взято вот отсюда:
https://en.cppreference.com/w/cpp/utility/variant/visit
false константа нужна в dependent контексте, чтоб вычилялась не сразу, а при  инстанцировании
источник

D

Danya in pro.cxx
Danya
always_false_v - это шаблон constexpr inline переменной типа bool, который вне зависимости от своего шаблонного параметра всегда false
Шаблоны переменных появились в С++14
inline переменные в С++17
источник

KO

Konstantin Osipov in pro.cxx
Danya
always_false_v - это шаблон constexpr inline переменной типа bool, который вне зависимости от своего шаблонного параметра всегда false
вот где можно почитать про шаблонные переменные?
источник

VS

Vlad Serebrennikov in pro.cxx
Konstantin Osipov
вот где можно почитать про шаблонные переменные?
источник

KO

Konstantin Osipov in pro.cxx
спасибо!
источник

DP

Denis Paukaev in pro.cxx
на сколько я помню, 0 может быть вполне себе валидным адресом )
источник

D

Danya in pro.cxx
Konstantin Osipov
вот где можно почитать про шаблонные переменные?
источник

AT

Andrew Titov in pro.cxx
Dmitry
Нулевой указатель не указывает на объект, для него нет разыменования.
Что значит "нет разыменовывания"?
источник

KO

Konstantin Osipov in pro.cxx
скажите пожалуйста, понятно как это работает если есть constexpr, а вот если ег оубрать, какой в этом будет практический смысл? Получится в такую шаблонную переменную писать можно будет?
источник

D

Danya in pro.cxx
Konstantin Osipov
скажите пожалуйста, понятно как это работает если есть constexpr, а вот если ег оубрать, какой в этом будет практический смысл? Получится в такую шаблонную переменную писать можно будет?
Да
template <typename T> foo = T{};
foo<int> = 42;
источник

D

Danya in pro.cxx
Я не знаю практических смыслов, кроме применения для тайп трейтов
Чтобы можно было писать:
std::is_same_v<T1, T2>

Вместо
std::is_same<T1, T2>::value
источник

АК

Александр Караев... in pro.cxx
Danya
Я не знаю практических смыслов, кроме применения для тайп трейтов
Чтобы можно было писать:
std::is_same_v<T1, T2>

Вместо
std::is_same<T1, T2>::value
Синглтоны юзать как Instance<T>->foo()
источник

KO

Konstantin Osipov in pro.cxx
спасибо
источник

KO

Konstantin Osipov in pro.cxx
А ещё не подскажете, может быть кто-то видел элегантную реализацию, я работаю над реализацией конечного автомата. Автомат принимает 4 вида сообщения (пока): MessageA, MessageB, MessageC, MessageD. Он может быть в 3 хостояниях (пока) State1, State2, State3. Автомат полностью детерминированный, то есть он принимает сообщение, выдаёт сообщение, и (опционально) переходит в новое состояние. Получается матрица из 12 функций, часть этих функций по логике делают одно и то же. Пока что я думаю сделать вот так:
class FSM {
 template <typename Message> step(Message&& m) {
         if (std::is_same<decltype(m), MessageA) step_a(m);
        ...
};
step_a - это лямбда, которую я переназначу когда удобно
источник

KO

Konstantin Osipov in pro.cxx
Есть более элегантные способы? Может кто-то видел уже похожее решение этой проблемы.
источник

AZ

Alexander Zaitsev in pro.cxx
уже смотрел в других реализациях FSM?
источник

АР

Андрей Руссков... in pro.cxx
ну тебе же не надо делать перегрузки ина состояния, верно?
источник