web-dev-qa-db-ja.com

const voidのポイントは何ですか?

明らかに、const voidを返す関数を宣言することが可能です:

const void foo()
{
}

次のコードはコンパイルされないため、g ++はconstを重要と見なしているようです。

#include <type_traits>

static_assert(std::is_same<void(), const void()>::value, "const matters");

では、const voidには実用的な意味がありますか?

59
fredoverflow

あんまり。ただし、voidでcv-qualificationsを無視するか、エラーを発生させると、コンパイラーの実装とエンドユーザーコードの両方の面で不要な複雑さが生じる可能性があります。次のようなテンプレートを検討してください

  template<typename T>
  const T ...

そのシナリオでvoidを使用することを特別なケースにする必要はありません(それがすでにある以上)、それは頭痛の種になるだけです。

また、const void役に立たない、const void*には用途があります。

44
Logan Capaldo