Size: a a a

2020 June 26

IS

Iskander Saitbatalov in pro.cxx
vient
вообще, я может не очень понял, но вопрос был в том, как сделать так, чтобы шаблонная переменная arr<T> имела значение типа std::array<T, N>, где N разное для разных T
В выделенном комментарии сделано ровно то, о чем просили в задаче.
источник

AD

Andrey Davydov in pro.cxx
Андрей Руссков
std::array<T, arr_size_for<T>()> ...;
где
arr_size_for() - constexpr функция через constexpr if или любой другой механизм?
Сравните https://gcc.godbolt.org/z/PXzify и https://gcc.godbolt.org/z/GbH-Cf и объясните мне зачем писать кода в 3 раза больше.
Ради догматизма (std::array якобы лучше чем c-array)?
источник

ПК

Побитый Кирпич... in pro.cxx
Andrey Davydov
Сравните https://gcc.godbolt.org/z/PXzify и https://gcc.godbolt.org/z/GbH-Cf и объясните мне зачем писать кода в 3 раза больше.
Ради догматизма (std::array якобы лучше чем c-array)?
Ты специально много кода написал, там проще можно)
источник

AD

Andrey Davydov in pro.cxx
Побитый Кирпич
Ты специально много кода написал, там проще можно)
как?
источник

АР

Андрей Руссков... in pro.cxx
Andrey Davydov
Сравните https://gcc.godbolt.org/z/PXzify и https://gcc.godbolt.org/z/GbH-Cf и объясните мне зачем писать кода в 3 раза больше.
Ради догматизма (std::array якобы лучше чем c-array)?
в постановке задачи не было сказано, N(T) является числом, явно определенным для ограниченного числа типов, или же зависит от T как-то иначе
источник

АР

Андрей Руссков... in pro.cxx
и да, выбрать std::arrray можно и ради догматизма
источник

v

vient in pro.cxx
vient
кажется, вы не поняли мою задачу
мне нужны константные массивы с заранее известными значениями для заранее известных типов
вот тут было сказано (если речь всё ещё про мою задачу)
источник

v

vient in pro.cxx
Андрей Руссков
std::array<T, arr_size_for<T>()> ...;
где
arr_size_for() - constexpr функция через constexpr if или любой другой механизм?
теперь понял, действительно работает, спасибо (но я, пожалуй, останусь с С-массивами)
источник

ПК

Побитый Кирпич... in pro.cxx
Andrey Davydov
как?
https://gcc.godbolt.org/z/aniasx

Без специализаций + лишний отступ, которого нет во втором примере. И это мы зря считаем #include + ещё отступ, потому что оно итак будет у нас в коде. Итого максимум x2, ато и x1.5
источник

IS

Iskander Saitbatalov in pro.cxx
Andrey Davydov
Сравните https://gcc.godbolt.org/z/PXzify и https://gcc.godbolt.org/z/GbH-Cf и объясните мне зачем писать кода в 3 раза больше.
Ради догматизма (std::array якобы лучше чем c-array)?
Например, чтобы можно было всякие begin () звать и т.п.
источник

ПК

Побитый Кирпич... in pro.cxx
Iskander Saitbatalov
Например, чтобы можно было всякие begin () звать и т.п.
Это итак можно звать на С массив, но это неважно, у С массивов нет преимуществ кроме "иногда меньше букв", а недостатки есть
источник

IS

Iskander Saitbatalov in pro.cxx
Побитый Кирпич
Это итак можно звать на С массив, но это неважно, у С массивов нет преимуществ кроме "иногда меньше букв", а недостатки есть
Как метод.
источник

AD

Andrey Davydov in pro.cxx
Без специализаций это еще <type_traits> притянем, так отлично. А когда к int и long добавится short, сделаем вложенный тернарник (мы ж на строчках экономим)?
Про лишний отступ это вообще мощно, в способе с c-array его не было, так как декларации влезали в одну строку и их не приходилось визуально отделять :)
источник

CD

Constantine Drozdov in pro.cxx
А какую задачу мы решаем?
источник

CD

Constantine Drozdov in pro.cxx
Я все еще не справился найти её в чате
источник

ПК

Побитый Кирпич... in pro.cxx
Andrey Davydov
Без специализаций это еще <type_traits> притянем, так отлично. А когда к int и long добавится short, сделаем вложенный тернарник (мы ж на строчках экономим)?
Про лишний отступ это вообще мощно, в способе с c-array его не было, так как декларации влезали в одну строку и их не приходилось визуально отделять :)
Пиши template<> на той же строке - и тут не надо будет (ещё меньше строк получится:)), <type_traits> явно идут вместе c array
источник

IS

Iskander Saitbatalov in pro.cxx
Constantine Drozdov
А какую задачу мы решаем?
Спор о том, действительно ли использование std::array лучше, чем C массива для массивов с предопределенным размером для конкретного типа.
источник

NP

Nikita Provotorov in pro.cxx
источник

NP

Nikita Provotorov in pro.cxx
Добрый день
Такой вопрос: реально ли сделать шаблонный массив, чтобы на нём работал sizeof?
Конкретно ситуация такая:
я в классе объявляю
template<typename T> inline static T array[];
inline static int array[1] = {0};
и дальше в методе класса на строку
sizeof(array<int>)
вижак (последний, в режиме C++17) говорит, что размер неизвестен, и это невалидный аргумент для sizeof
источник

ПК

Побитый Кирпич... in pro.cxx
Constantine Drozdov
А какую задачу мы решаем?
источник