這跟泛型無關, 是降轉的問題以 T.X 是 int, K 是 float 來說的話a.X * b 是一個 int 乘 float, 照規則會得到 float然後你要把一個 float 塞進 c.X 這個 int 裡就噴 C4244 了這裡跟泛型沾到邊的地方只有因為泛型你不知道 T.X 的型態那麼用 decltype 是對的, 但你忘了括號decltype 要帶一對 () 裡面放式子才是對的語法:
https://en.cppreference.com/w/cpp/language/decltype