Clang のドキュメントには次のように書かれています。
_Float16 演算は、ターゲット (ARMv8.2a など) で利用可能な場合、ネイティブの半精度サポートを使用して実行されます。それ以外の場合は、より高い精度 (現在は常に float) で実行され、_Float16 に切り捨てられます。
_Float16
最初のケースでのみ使用し、float
そうでなければ、2 番目のケースでの切り捨てを回避する方法はありますか? つまり、次のようなもの
#if ???
using float_maybe_16 = _Float16;
#else
using float_maybe_16 = float;
#endif