[解決済み】make_uniqueとパーフェクトフォワーディング
2022-04-07 18:56:06
質問
がないのはなぜ?
std::make_unique
C++11の標準ライブラリにある関数テンプレート?見つける
std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
少し冗長ですが、以下のようにすれば、もっとすっきりするのではないでしょうか?
auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
を隠すことができます。
new
をうまく使って、一度だけタイプに触れています。
とにかく、以下は私が試行錯誤して実装した
make_unique
:
template<typename T, typename... Args>
std::unique_ptr<T> make_unique(Args&&... args)
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
を取得するのに結構時間がかかりました。
std::forward
のものがコンパイルされましたが、正しいかどうかわかりません。そうなんですか?具体的にはどのような
std::forward<Args>(args)...
とはどういう意味ですか?コンパイラはそれをどう判断するのでしょうか?
どのように解決するのですか?
C++標準化委員会の委員長であるハーブ・サッター氏は、自身のブログで次のように書いている。 ブログ :
C++11には含まれていないこと
make_unique
は見落としの部分があり、将来的にはほぼ間違いなく追加されるでしょう。
また、OPが与えたものと同一の実装を与えている。
編集する
std::make_unique
の一部となりました。
C++14
.
関連
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] スマートポインターとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】Enterキーを押して続行する
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] C++ ベクトル、ポインターを使ったデストラクタ。