web-dev-qa-db-ja.com

const voidとは何ですか?

std::is_void の状態:

Tがtype void、const void、volatile void、またはconst volatile voidの場合、trueに等しいメンバー定数値を提供します。

次に、const void、またはvolatile void

この回答const void戻り値の型は無効です(ただし、VC++ 2015でコンパイルします)

const void foo() { }

標準の場合、const voidは無効です(VCが間違っています)-次にconst void

83
Ajay

const voidは、ポインタを形成できる型です。通常のvoidポインターに似ていますが、変換の動作は異なります。たとえば、const int*void*に暗黙的に変換することはできませんが、const void*に暗黙的に変換することはできます。同様に、const void*がある場合はstatic_castint*することはできませんが、static_castconst 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
86

型はテンプレートの結果である場合があります。テンプレートはconst T、およびTvoidとしてインスタンス化されます。

リンクされた回答は誤解されているか、むしろ、テンプレート以外のタイプの特殊なケースを考慮し、const void無意味かもしれませんが、有効なコードです。

18
DevSolar