состояние => фабричный метод
. Само собой понятно что это объект некоторого класса, а не сам класс. Это важно понимать.если можно избавившись от класса просто тоже самое написать в методе?
А, что даёт *(float*)?
void*
, а чтобы начать с ним работать, его нужно привести, минимум, к адресу на переменную конкретного типа.(float*)
из void*
сделает float*
, а звезда слева - это разыменование указателя, в результате которого получается float&
. После этой легкой операции с памятью по адресу можно работать как с переменной типа float
.И как в данном случае должна выглядеть разметка?
И вот r-value на этот самый type и используется для инстанцирования вызовов с переданным к-value значением, а версия с l-value ссылкой на этот type используется для инстанцирования с l-value значением.
std::remove_reference
применяется только к параметру std::forward
и нужен для реализации одного конкретного случая. Тип результата у std::forward
все так же выводится с помощью reference collapse rule.
Программист - понятие в руках обывателя не имеющее границ. У тебя в вопросе конкретики нет, это уже сильно режет твои шансы на успех.
Конкретика - это:
И, конечно же, еще есть многократно размещенная на тостере ссылка на роадмапу игрового разработчика:
https://github.com/miloyip/game-programmer