значи я знаю, что у меня никогда не будет потерей точностей и говорю это компилятору, чтобы не сыпал варнинг... Хотя мне кажется тут на лицо, опасность, т.к. double'ы умножаются потом еще и складываются, когда-нибудь выстрел будет в ногу... поэтому если я не уверен, что (x * m.m00 + y * m.m10) и (x * m.m10 + y * m.m11) - поместится во float, я вообще не буду писать никаких приведениев ни в С++ стиле ни в Си, оставлю так, пусть компилятор говорит мне об потенциальной опасности в будущем...
Влазит одинаково во float и double, опасность переполнения та же самая. Просто float будет больше терять точность т.к. умеет хранить меньше цифр - ну это забота вызывающего, если он подавал на вход float значит считал ему точности хватит.
А в остальном я с Вами согласен, хотя мне больше нравится (float) или float(). Вариант "без всяких приведений" также считаю разумным, только придется запретить этот варнинг т.к. их будет очень много (это маленький кусочек показан).
Остальные от ответа благоразумно уклонились и предпочитают отпихиваться общими словами - ну это их право