Size: a a a

2020 May 25

D

Dr Zlo in pro.cxx
источник

D

Dr Zlo in pro.cxx
Репл
источник

N

Neargye in pro.cxx
Mikhail Matrosov
видимо, я видел вот этот http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3597.html
но он по ходу не был принят. причины мне пока неизвестны
В любом случае спачибо
источник

D

Danya in pro.cxx
Dr Zlo
Как сделать так чтобы массив расположился в статической памяти с тем учетом что его размер идёт из константы другого класса-аргумента конструктора?

У меня класс для работы с графикой инициализируется абстрактным дисплеем, из него должен вытащить ширину/высоту и создать бэкбуффер в памяти.
1) Кажется, помечать переменные-члены const является не хорошей практикой — но я не помню причин — могу ошибаться
источник

D

Danya in pro.cxx
2) В данном случае никак, потому что AbstractDisplay::width и AbstractDisplay::height не являются константами времени компиляции
источник

MM

Mikhail Matrosov in pro.cxx
Dr Zlo
Как сделать так чтобы массив расположился в статической памяти с тем учетом что его размер идёт из константы другого класса-аргумента конструктора?

У меня класс для работы с графикой инициализируется абстрактным дисплеем, из него должен вытащить ширину/высоту и создать бэкбуффер в памяти.
в строке 40? надо сделать AbstractDisplay литеральным - с constexpr конструктором. тогда можно будет в constexpr контексте обращаться к его полям. но тут проблема в том, что Graphic::Graphic вызывается на рантайме. поэтому так просто не получится
источник

MM

Mikhail Matrosov in pro.cxx
и как бы не очень понятно, если они заранее известны - то почему нельзя их поместить, скажем, в статические поля?
источник

MM

Mikhail Matrosov in pro.cxx
тогда проблемы бы не было
источник

D

Dr Zlo in pro.cxx
Mikhail Matrosov
тогда проблемы бы не было
проблема не в том как обьявить, static или const
источник

N

Neargye in pro.cxx
Danya
1) Кажется, помечать переменные-члены const является не хорошей практикой — но я не помню причин — могу ошибаться
Мувать конст сложно
источник

D

Dr Zlo in pro.cxx
мне нужно чтобы итоговый массив лёг в bss, а не в heap
источник

MM

Mikhail Matrosov in pro.cxx
Dr Zlo
мне нужно чтобы итоговый массив лёг в bss, а не в heap
но тогда размер необходимо знать на этапе компиляции, кмк
источник

D

Dr Zlo in pro.cxx
то есть не динамически аллоцировался
источник

D

Dr Zlo in pro.cxx
Mikhail Matrosov
но тогда размер необходимо знать на этапе компиляции, кмк
но на этапе компиляции он известен, это числовая константа которая не меняется в реалтайме
источник

D

Danya in pro.cxx
Можно сделать например так:
template<std::size_t w, std::size_t h>
class AbstractDisplay {
 static constexpr auto width = w;
 static constexpr auto height = h;
 ...
};

class Display : public AbstractDisplay<240, 240> {};

template <typename D>
class Graphic {     static_assert(std::is_base_of<AbstractDisplay, D>::value);
 std::array<uint8_t, D::width * D::height>;
};
источник

D

Danya in pro.cxx
Шаблоны головного мозга..
источник

AN

Alexander N in pro.cxx
Зачем массив массивов?
источник

D

Danya in pro.cxx
Alexander N
Зачем массив массивов?
Это как пример
источник

D

Danya in pro.cxx
Alexander N
Зачем массив массивов?
Подправил
источник

MM

Mikhail Matrosov in pro.cxx
Dr Zlo
но на этапе компиляции он известен, это числовая константа которая не меняется в реалтайме
тогда вообще не уверен, что это возможно. только если заранее выделить буфер достаточного размера, а потом в него залезть на рантайме...
источник