クラスがありvariant
ます。コンストラクターのペアがあります。
/// Construct and fill.
template <typename T>
inline
variant (const T& t)
{
YYASSERT (sizeof (T) <= S);
new (buffer.raw) T(t);
}
template <typename T>
inline
variant (T&& t)
{
YYASSERT (sizeof (T) <= S);
new (buffer.raw) T(std::move(t));
}
このコードでこれらのコンストラクターを呼び出しました。
parser::symbol_type
parser::make_IDENTIFIER (const Wide::ParsedFile::Identifier*& v)
{
return symbol_type (token::IDENTIFIER, v);
}
symbol_type
variant
この特定のコンストラクターの 2 番目の引数としてa を取り、v
暗黙的に変換されます。
ただし、MSVC は他のコンストラクターを使用する代わりに右辺値参照コンストラクターを使用しようとするためnew
、参照しようとするとコンパイル エラーが発生します。それはなぜですか、どうすればそれを止めることができますか?