std :: is_struct型の特性がないのはなぜですか?

ジェペセン:

Tがクラスかどうかを確認するために使用できることを確認しました。

bool isClass = std::is_class<T>::value;

クラスと構造体の両方に対してtrueを返します。C ++でもそれらはほとんど同じであることは知っていますが、型の特性でこれらの違いがない理由を知りたいのですが。この違いを確認することは常に役に立たないのですか、それとも理解できない理由がありますか?

Orbitでの軽量レース:

クラスと構造体の両方に対してtrueを返します。C ++でもそれらはほとんど同じであることは知っていますが、型の特性でこれらの違いがない理由を知りたいのですが。

残念ながら、これはC ++でよくある誤解です。根本的な誤解に起因する場合もありますが、英語の曖昧性に起因する場合もあります。それは、不正確なコンパイラー診断、不適切に書かれた本、誤ったSOの回答から生じる可能性があります…

あなたはおそらく次のようなものを読んだでしょう:

「メンバーとベースのデフォルトの可視性を除いて、構造体とクラスのC ++に違いはありません。」

この箇所は、誤解を招くような意味で解釈される可能性があります。「違いなし」などのフレーズを使用する場合同一性同等の概念を区別するのが難しいためです。

実際、C ++には1985年以来構造体がありません。クラスしかありません。

キーワードclassキーワードで宣言するタイプの種類structクラスです。限目。キーワードstructと、そのキーワードを使用してクラスを定義するときにデフォルトである可視性ルールは、Cとの下位互換性のためにのみ保持されていましたが、それは構文的なものです。結果の型が実際に異なる種類になるわけではありません。

文字通り作成するタイプがないため、タイプ特性は区別されません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

std :: forward()が型を推測しないのはなぜですか?

分類Dev

`std :: invoke`がconstexprではないのはなぜですか?

分類Dev

std :: exchangeがnoexceptではないのはなぜですか?

分類Dev

std :: allocator :: deallocateがnoexceptではないのはなぜですか?

分類Dev

std :: declvalがconstexprではないのはなぜですか?

分類Dev

std :: lock_guard / std :: unique_lockが型消去を使用しないのはなぜですか?

分類Dev

std :: stringがstd :: vectorの特殊化ではないのはなぜですか?

分類Dev

std :: reverse_iterator :: operator []の戻り値の型が指定されていないのはなぜですか?

分類Dev

std :: functionにfunction_typeまたは同等のメンバー型がないのはなぜですか?

分類Dev

C ++ 17にstd :: construct_atがないのはなぜですか?

分類Dev

C ++ 17にstd :: construct_atがないのはなぜですか?

分類Dev

std :: eraseがないのはなぜですか?

分類Dev

std :: eraseがないのはなぜですか?

分類Dev

std :: make_function()がないのはなぜですか?

分類Dev

std :: on_exitがないのはなぜですか?

分類Dev

C ++ 17にstd :: future :: thenがないのはなぜですか?

分類Dev

std :: vector <bool>に.data()がないのはなぜですか?

分類Dev

std :: uninitialized_move_if_noexceptがないのはなぜですか?

分類Dev

std :: spanにsize_typeがないのはなぜですか?

分類Dev

std :: sizeがないのはなぜですか?

分類Dev

std :: make_raw_storage_iteratorがないのはなぜですか?

分類Dev

std :: future :: try_wait()がないのはなぜですか?

分類Dev

std :: array :: frontとstd :: array :: backが例外ではないのはなぜですか?

分類Dev

std :: futureとstd :: promiseが最終的ではないのはなぜですか?

分類Dev

std :: endlの型の推定が失敗するのはなぜですか?

分類Dev

std :: greater <>の場合、なぜstd :: less(std :: lesser <>ではない)なのですか?

分類Dev

std :: {container} :: emplaceが引数の型を推測しないのはなぜですか?

分類Dev

C ++の許可型にstd :: pairがないのに、std :: mapのデフォルトコンストラクタがないのはなぜですか?

分類Dev

std :: foreachがstd :: vector <bool>で機能しないのはなぜですか?

Related 関連記事

  1. 1

    std :: forward()が型を推測しないのはなぜですか?

  2. 2

    `std :: invoke`がconstexprではないのはなぜですか?

  3. 3

    std :: exchangeがnoexceptではないのはなぜですか?

  4. 4

    std :: allocator :: deallocateがnoexceptではないのはなぜですか?

  5. 5

    std :: declvalがconstexprではないのはなぜですか?

  6. 6

    std :: lock_guard / std :: unique_lockが型消去を使用しないのはなぜですか?

  7. 7

    std :: stringがstd :: vectorの特殊化ではないのはなぜですか?

  8. 8

    std :: reverse_iterator :: operator []の戻り値の型が指定されていないのはなぜですか?

  9. 9

    std :: functionにfunction_typeまたは同等のメンバー型がないのはなぜですか?

  10. 10

    C ++ 17にstd :: construct_atがないのはなぜですか?

  11. 11

    C ++ 17にstd :: construct_atがないのはなぜですか?

  12. 12

    std :: eraseがないのはなぜですか?

  13. 13

    std :: eraseがないのはなぜですか?

  14. 14

    std :: make_function()がないのはなぜですか?

  15. 15

    std :: on_exitがないのはなぜですか?

  16. 16

    C ++ 17にstd :: future :: thenがないのはなぜですか?

  17. 17

    std :: vector <bool>に.data()がないのはなぜですか?

  18. 18

    std :: uninitialized_move_if_noexceptがないのはなぜですか?

  19. 19

    std :: spanにsize_typeがないのはなぜですか?

  20. 20

    std :: sizeがないのはなぜですか?

  21. 21

    std :: make_raw_storage_iteratorがないのはなぜですか?

  22. 22

    std :: future :: try_wait()がないのはなぜですか?

  23. 23

    std :: array :: frontとstd :: array :: backが例外ではないのはなぜですか?

  24. 24

    std :: futureとstd :: promiseが最終的ではないのはなぜですか?

  25. 25

    std :: endlの型の推定が失敗するのはなぜですか?

  26. 26

    std :: greater <>の場合、なぜstd :: less(std :: lesser <>ではない)なのですか?

  27. 27

    std :: {container} :: emplaceが引数の型を推測しないのはなぜですか?

  28. 28

    C ++の許可型にstd :: pairがないのに、std :: mapのデフォルトコンストラクタがないのはなぜですか?

  29. 29

    std :: foreachがstd :: vector <bool>で機能しないのはなぜですか?

ホットタグ

アーカイブ