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が派手である可能性があります)?