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
?
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
型はテンプレートの結果である場合があります。テンプレートはconst T
、およびT
でvoid
としてインスタンス化されます。
リンクされた回答は誤解されているか、むしろ、テンプレート以外のタイプの特殊なケースを考慮し、const void
は無意味かもしれませんが、有効なコードです。