Apparently, it is possible to declare a function returning const void:
const void foo()
{
}
g++ seems to consider the const important, because the following code does not compile:
#include <type_traits>
static_assert(std::is_same<void(), const void()>::value, "const matters");
So does const void have any practical significance?
Not really. But to ignore cv-qualifications on void or to make them errors could create unnecessary complexity in terms of both compiler implementation and end-user code. Consider templates like
There’s no reason to make using void in that scenario a special case (more than it already is), it would just create headaches.
Also, while
const voidisn’t helpful,const void*has its uses.