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
template<typename T>
const T ...
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 void
isn't helpful, const void*
has its uses.