タグ

ブックマーク / cpprefjp.github.io (5)

  • [[nodiscard]]属性に理由となる文字列を付加できるようにする - cpprefjp C++日本語リファレンス

    概要 戻り値が使用されない場合に警告を出力させる[[nodiscard]]属性に、戻り値を無視してはならない理由を文字列リテラルとして指定できるようにする。 これにより、以下のようなことをユーザーに警告メッセージとして伝えることができる: 戻り値を無視するとリソースリークの可能性がある 誤って別な関数を使ってしまっている可能性がある 理由を設定できることで、ユーザーが関数の実装を調べなくても戻り値を無視してはならない理由を正確に知ることができるようになる。 仕様 nodiscard属性は、以下の形式の引数をとることができる: nodiscard(文字列リテラル) nodiscard属性なしで宣言された名前もしくはエンティティは、あとで属性をつけて再宣言でき、その逆もできる。その際、引数のありなしも変更できる nodiscard属性の引数である文字列リテラルは、戻り値を無視してはならない理由

  • atomic - cpprefjp C++日本語リファレンス

    namespace std { template <class T> struct atomic; // 先行宣言 template <class T> struct atomic<shared_ptr<T>>; template <class T> struct atomic<weak_ptr<T>>; } 概要 <memory>ヘッダでは、std::shared_ptrとstd::weak_ptrクラスに対するstd::atomicクラスの特殊化を定義する。 これらの特殊化を使用することで、共通のスマートポインタオブジェクトに対する複数スレッドでの操作をアトミックに行える。 共通メンバ関数 名前 説明 対応バージョン

  • インライン名前空間 [N2535] - cpprefjp C++日本語リファレンス

    diff --git a/lang/cpp11/inline_namespaces.md b/lang/cpp11/inline_namespaces.md index a25299be5..36986907a 100644 --- a/lang/cpp11/inline_namespaces.md +++ b/lang/cpp11/inline_namespaces.md @@ -5,7 +5,7 @@ このページはC++11に採用された言語機能の変更を解説しています。 -のちのC++規格でさらに変更される場合があるため[関連項目](#relative_page)を参照してください。 +のちのC++規格でさらに変更される場合があるため[関連項目](#relative-page)を参照してください。 <!-- last lang caution -->

  • 委譲コンストラクタ [N1986] - cpprefjp C++日本語リファレンス

    このページはC++11に採用された言語機能の変更を解説しています。 のちのC++規格でさらに変更される場合があるため関連項目を参照してください。 概要 「委譲コンストラクタ (delegating constructors)」は、コンストラクタから、同じクラスの他のコンストラクタに処理を委譲する機能である。 class X { int i_; public: X(int i) : i_(i) {} // (1) : int型のパラメータを受け取るコンストラクタ X() : X(42) {} // (2) : デフォルトコンストラクタ。 // (1)のコンストラクタに初期値を渡して初期化処理を委譲する }; (2)のコンストラクタでの、X(42)の部分が委譲コンストラクタに当たる。(2)のコンストラクタから(1)のコンストラクタを呼び出し、初期化処理を(1)のコンストラクタに集約している。

  • メンバ関数の左辺値/右辺値修飾 [N2439] - cpprefjp C++日本語リファレンス

    このページはC++11に採用された言語機能の変更を解説しています。 のちのC++規格でさらに変更される場合があるため関連項目を参照してください。 概要 メンバ関数のCV修飾は、*thisがconst/volatileである場合とそうでない場合でメンバ関数をオーバーロードできる。 同じように、メンバ関数に対して&もしくは&&の参照修飾子を付加することで、*thisが左辺値である場合に呼び出されるメンバ関数のオーバーロード、*thisが右辺値である場合に呼び出されるメンバ関数のオーバーロードを定義できる。 これを使用することで、「一時オブジェクトな*thisに対して特定のメンバ関数を呼び出せてはならない制約」、「*thisが左辺値もしくは右辺値である場合の効率的な実装を使い分ける」といった設計ができるようになる。 struct X { // 代入演算子は、*thisが左辺値である場合のみ呼び出

  • 1