const auto min = -std::numeric_limits<T>::max();
T x = min; // conversion from 'const int' to 'short', possible loss of data
Tはテンプレート引数でありshort、この場合はaです。単項マイナスは、明らかに汎整数拡張を実行します。
- 単項マイナスが汎整数拡張を実行するのはなぜですか?
autoがに変更された場合T、警告は生成されませんが、intをshortに割り当てる必要があります。警告がないのはなぜですか(VSが派手である可能性があります)?