私はC++ 11で作業しており、同等のコードがいくつかあります
template<typename T1, typename T2>
auto add_func( const T1& lhs, const T2& rhs )
{
return lhs + rhs;
}
float
and int
asT1
を使用してこのコードをコンパイルするT2
と、変換によってデータが失われる可能性があるという警告が表示されますが、これは当然のことです。
私の問題は、この警告のすべてのインスタンスが行を指しているためreturn lhs + rhs;
、警告がほとんど役に立たないことです。
テンプレート内ではなく、関数が呼び出された場所でこれらの警告を再スローする方法 (理想的には移植可能な方法) はありますか?
私はVisual Studio 2012で作業していますが、移植可能な方法が望ましいでしょう
編集:
より明確にするために、この警告は正しく、このコードの誤用が原因であることを知っています。問題は、そのような誤用が行われた場所をコンパイラに見つけてもらいたいということです。現在、この警告が表示された場合、 への各呼び出しを手動で検証する必要がありますが、これadd_func
はあまり維持できないようです。
これが今より理にかなっていることを願っています