0

std::ref(object) が std::reference_wrapper(object) を作成し、std::reference_wrapper には非明示的な型変換演算子メンバー関数があることを知っています

operator T&() const

そして、これは、テンプレート パラメーターの演繹が行われるときの使用方法に影響することを知っています。したがって、以下の Print では、引数の型 T は、std::ref("こんにちは")

template <class T>
void Print(T t)
{
    std::cout << t << std::end;
}

この行がコンパイルされないのはなぜですか?

std::string s = "hello";
std::cout << std::reference_wrapper<std::string>(s) << std::endl;

インスタンス化された特殊化には、

operator std::string&() const

型変換関数なので、なぜこのような参照ラッパーを使用できないのですか?

4

1 に答える 1