私は完璧なフォワーディングの古典的な例として、スマートポインタの作成に取り組んでいます。スマートなポインタの作成者
template<typename T>
//Return a smart pointer on the given objet
shared_ptr<T> smartPointerMaker(T&& arg)
{
return shared_ptr<T>(forward<T>(arg));
}
//In the main...
shared_ptr<int> p = smartPointerMaker(42);
しかし、それはと言って、コンパイルされません「への呼び出しに該当する関数 『のstd :: shared_ptrの:: shared_ptrの(int型)』」
あなたはusinする必要がありますg 'T &&' for forwardingとelipsis '...'はバリデーショナルテンプレート用です。 – Xarn
この例はどこで手に入りましたか?それについては何も「古典的」ではないようです。 –
作成の「新しいT」部分が欠落しています。今では、 'std :: shared_ptr'を引数としてintを与えて作成しようとしていますが、明らかに動作しません。 –
Xarn