Size: a a a

2020 April 20

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Не могу придумать решения. auto как в плюсах не хватает
Получается, что не решена только одна проблема, это передача типа
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Да. Си не позволяет типами жонглировать
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Да. Си не позволяет типами жонглировать
Ну значит время костылей)))

#define WRITE_INT(T) _WRITE_INT(int16_t, IS_SIGNED(T), int64_t, MIN_OF(int16_t), MAX_OF(int16_t))

#define WRITE_UINT(T) _WRITE_INT(int16_t, IS_SIGNED(T), uint64_t, MIN_OF(int16_t), MAX_OF(int16_t))
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Об этом я думал. Если такое решение устраивает, надо так
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Об этом я думал. Если такое решение устраивает, надо так
Ну другого нет
источник

I

Ivan in pro.cxx
Чуваки, а кто хорошо шарит в метапрограмминге? Я что-то немного застрял и мне нужна ваша экспертная помощь :)
Мне требуется в compile-time проверить есть ли дубликаты в std::array (ограничен C++1y) но как-то не компиляется даже...
https://godbolt.org/z/uVYMYT
источник

АК

Александр Караев in pro.cxx
смешались в кучу кони, люди..
тут проверки и на размер контейнера (с нечитаемыми конструкторами) смешаны с проверкой дубликатов. что нужно? у std::array<T, N> проверить наличие дублей? HasDuplicates должна работать, но я бы вынес её из класса и сделал шаблонной по T, N (сейчас там фиксирован Size)
источник

I

Ivan in pro.cxx
Александр Караев
смешались в кучу кони, люди..
тут проверки и на размер контейнера (с нечитаемыми конструкторами) смешаны с проверкой дубликатов. что нужно? у std::array<T, N> проверить наличие дублей? HasDuplicates должна работать, но я бы вынес её из класса и сделал шаблонной по T, N (сейчас там фиксирован Size)
Я не о код ревью спрашивал, а осуществимо ли такое или нет вообще. И если да, могли бы указать в чём ошибка? Это пока что draft.
источник

АК

Александр Караев in pro.cxx
Ivan
Я не о код ревью спрашивал, а осуществимо ли такое или нет вообще. И если да, могли бы указать в чём ошибка? Это пока что draft.
обычно, когда просят помощи, показывают минимальный пример, а не кидают кучу кода
источник

АК

Александр Караев in pro.cxx
Ivan
Я не о код ревью спрашивал, а осуществимо ли такое или нет вообще. И если да, могли бы указать в чём ошибка? Это пока что draft.
источник

I

Ivan in pro.cxx
Если бы мне был доступен C++17 , это было бы намного короче, благодаря if constexpr. Так что, сорри))
источник

I

Ivan in pro.cxx
Благодарю! Только это не полный пример, у меня массив из двух полей, и приходится по каждому отдельную проверку вызывать, конструируя по каждому отдельный массив и компилер начинает ругаться на std::get что он яко бы не constexpr(
источник

АК

Александр Караев in pro.cxx
Ivan
Благодарю! Только это не полный пример, у меня массив из двух полей, и приходится по каждому отдельную проверку вызывать, конструируя по каждому отдельный массив и компилер начинает ругаться на std::get что он яко бы не constexpr(
Не понимаю проблему. Задача "проверить массив на дубликаты" решена. Если ошибки остались, значит задача другая и её нужно сформулировать
источник

I

Ivan in pro.cxx
Александр Караев
Не понимаю проблему. Задача "проверить массив на дубликаты" решена. Если ошибки остались, значит задача другая и её нужно сформулировать
Вот другая часть и называется "эксперты по метапрограммингу, подскажите, как пофиксить проверку по двум полям, и если поле не может быть проверено в compile-time (пока что !std::is_pod<...>), не проверять поле совсем.
источник

АК

Александр Караев in pro.cxx
Ivan
Вот другая часть и называется "эксперты по метапрограммингу, подскажите, как пофиксить проверку по двум полям, и если поле не может быть проверено в compile-time (пока что !std::is_pod<...>), не проверять поле совсем.
constexpr std::array<T2, Size> array2{{std::get<1>(args)...}}; внутри тела функции - невалидный код
args - не constexpr
источник

I

Ivan in pro.cxx
Александр Караев
constexpr std::array<T2, Size> array2{{std::get<1>(args)...}}; внутри тела функции - невалидный код
args - не constexpr
:( То есть, это невозможно в таких обстоятельствах?
источник

АК

Александр Караев in pro.cxx
Ivan
:( То есть, это невозможно в таких обстоятельствах?
я бы предложил бросать исключение, тогда при конструировании constexpr Container будет эффект аналогичный static_assert'у
источник

АК

Александр Караев in pro.cxx
/* non-constexpr! */ std::array<T2, Size> array2{{std::get<1>(args)...}};

if (HasDuplicates(array2)) throw "Duplicates in the 2nd field");
источник

I

Ivan in pro.cxx
о_О но это уже рантайм
источник

АК

Александр Караев in pro.cxx
не-а
источник