> background: on framework or library side, we often call T(0) to initialize type T with zero value, and T maybe float or integer type - reproduce ```c++ #include "CL/sycl.hpp" #include <sycl/ext/intel/experimental/bfloat16.hpp> using bfloat16 = sycl::ext::intel::experimental::bfloat16; int main() { auto val = bfloat16(0); return 0; } ``` - error ``` ctor.cc:7:14: error: ambiguous conversion for functional-style cast from 'int' to 'bfloat16' (aka 'sycl::ext::intel::experimental::bfloat16') auto val = bfloat16(0); ^~~~~~~~~~ /home/gta/intel/linux_prod/compiler/linux/bin/../include/sycl/ext/intel/experimental/bfloat16.hpp:47:3: note: candidate constructor bfloat16(const storage_t &a) : value(a) {} ^ /home/gta/intel/linux_prod/compiler/linux/bin/../include/sycl/ext/intel/experimental/bfloat16.hpp:50:3: note: candidate constructor bfloat16(const float &a) { value = from_float(a); } ^ 1 error generated. ```