nes
> Какой поинт от std::array<int, 0>?
база индукции же
entryway
Допустим есть енум:
enum class Keys : int32 { Escape, MaximumKeys }; class KeyboardState { private: array<uint8, Keys::MaximumKeys> keys; };
А потом, по мере реализации добавляем еще коды клавиш.
nes
А потом портировал на планшет где кнопок нет и заявив MaximimKeys в 0 код не поломается. И т.п.
=A=L=X=
На планшете либо вообще KeyboardState не будет,
либо будет софтварный враппер,
но поинт кажется уловил.
nes
> На планшете либо вообще KeyboardState не будет,
> либо будет софтварный враппер,
И зачем поддерживать две версии кода, когда можно просто параметризовать через 0?
;)
Ogra
Я не говорю про две версии, я говорю про одну из них, на выбор.
Ставить кол-во клавиш в 0 - логически неверное решение,
в данном случае.
nes
> Ставить кол-во клавиш в 0 - логически неверное решение,
Оно может быть не ручным, а автоматическим - из редактора, геймдизайнером, например.
Возьмем не KeyboardState, а, скажем, источники глобального освещения, от 0 до 16 (просто предположим) и убер-оптимизированный софтварный рендер, с кодогенератором. На шестнадцати источниках будет цикл, на двух компилятор сделает loop-unroll, а на нуле - вырежет напрочь глобальное освещение.
Ogra
>Оно может быть не ручным, а автоматическим - из редактора, геймдизайнером, например.
Тогда тем более не взлетит, ибо шаблоны - это время-компиляции.
Да, с примером с источниками освещения юзабельно.
nes
> Тогда тем более не взлетит, ибо шаблоны - это время-компиляции.
Кодогенерацию никто не отменял, хоть на уровне game.dll, хоть на уровне level.dll . По-своему логично - нафига брать плюсы, если не пользоваться всяческими компайл-тайм оптимизациями.
Ogra
> если не пользоваться всяческими компайл-тайм оптимизациями.
люблю такой шаблонный шаблон в шаблоне - это сарказм
Кто какой вариант выберет и почему?
sf::Window window = sf::Window(sf::VideoMode( 640, 480), "Tittle", sf::Style::Default);
auto window = sf::Window(sf::VideoMode( 640, 480), "Tittle", sf::Style::Default);
sf::Window window(sf::VideoMode( 640, 480), "Tittle", sf::Style::Default);
Vlad2001_MFS
> Кто какой вариант выберет
Я выбираю третий.
> и почему?
Из эстетических чуйств.
третий.
Первые 2 варианта, как-то нехорошо пахнут ненужным копированием, на ровном месте... особенно, если конструктор копирования не определён явно.
auto window = WindowManager->createWindow()