0
私はMicrosoft Visual Studio(MSVS)2012 Proを持っています。私はこれを行う際に警告レベルを少し上げたレベル4に設定しました。私は、ブーストライブラリからインクルードされたヘッダファイルの警告を受け取りました。メッセージはこれです:ブーストオプションのヘッダーファイルでC++関連の警告を処理する方法は?
C:\Users\****\boost/optional/optional.hpp(595): warning C4244: 'initializing' : conversion from 'T_DOUBLE' to 'float', possible loss of data
C:\Users\****\boost/optional/optional.hpp(430) : see reference to function template instantiation 'void boost::optional_detail::optional_base<T>::construct<double>(Expr &&,const void *)' being compiled
with
[
T=T_FLOAT,
Expr=T_DOUBLE
]
C:\Users\****\boost/optional/optional.hpp(430) : see reference to function template instantiation 'void boost::optional_detail::optional_base<T>::construct<double>(Expr &&,const void *)' being compiled
with
[
T=T_FLOAT,
Expr=T_DOUBLE
]
は、この警告につながるファイル内のコードはブースト1.64.0.B2の最新ベータ版でこの(ライン610でまだそれを正確に似ている - しかし、私は今、ベータ版ではないです):
#ifndef BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES
// Constructs using any expression implicitly convertible to the single argument
// of a one-argument T constructor.
// Converting constructions of optional<T> from optional<U> uses this function with
// 'Expr' being of type 'U' and relying on a converting constructor of T from U.
template<class Expr>
void construct (Expr&& expr, void const*)
{
new (m_storage.address()) value_type(boost::forward<Expr>(expr)) ;
m_initialized = true ;
}
何である理由(=この警告のために)理解することを学ぶとどのように任意の他人私のためにブーストヘッダーでそれを排除するために?別の考え方:それをグローバルな方法で「修正」することは理にかなっているのですか、他のコードを改善したり修正したりするために、他の場所(ブーストコードまたはアプリケーションコード)を指し示すより深い意味がありますか?
これらの警告の原因となったコードを表示することはできますか?すなわち、 'construct'関数を呼び出すようになりました。理想的には[最小限の、完全で実証可能な例](https://stackoverflow.com/help/mcve)。あなたはもっと正確な答えを得るでしょう。 –
私のコード内のダングリングアイテムが(例えば)であった; 'fValue = row.get( "キーワード")' 私はそれを変更: 'fValue = row.get ( "キーワード")。 ' 真の起源と報告された警告の場所は、互いにかなり離れています。 –