1. ホーム
  2. c++

[解決済み] const voidとは何ですか?

2022-02-08 07:03:44

質問

の説明文は? std::is_void と記載されています。

Tが真の場合、真に等しいメンバ定数値を提供する。 型 void, const void, volatile voidです。 またはconst volatile voidです。

では、何ができるかというと const void または volatile void ?

この回答 は次のように述べています。 const void の戻り値は無効です(ただし、VC++ 2015でコンパイル可能です)。

const void foo() { }

標準の場合。 const void は無効(VCは間違い)である。 const void ?

解決方法は?

const void はポインタを形成することができる型です。これは通常のvoidポインタと似ていますが、変換の仕方が異なります。例えば const int* に暗黙のうちに変換することはできません。 void* に暗黙のうちに変換することができます。 const void* . 同様に、もし const void* はできません。 static_cast に変換します。 int* しかし、あなたは static_cast に変更します。 const int* .

const int i = 10;
void* vp = &i;                           // error
const void* cvp = &i;                    // ok
auto ip = static_cast<int*>(cvp);        // error
auto cip = static_cast<const int*>(cvp); // ok