【发布时间】:2011-06-30 18:55:42
【问题描述】:
显然,可以声明一个返回const void的函数:
const void foo()
{
}
g++ 似乎认为const 很重要,因为以下代码无法编译:
#include <type_traits>
static_assert(std::is_same<void(), const void()>::value, "const matters");
那么const void有什么实际意义吗?
【问题讨论】:
-
在不知道任何细节的情况下,我会说它的存在是出于正交性的原因。想象一个使用替换类型而不是限定符的元函数。它适用于所有类型,除非 void 可以隐式剥离。
-
我现在很好奇是什么导致了这一发现。 :) 在玩编译器的中间输出,是吗?
-
@Tim:我试图决定将
const放在函数指针查找表中的哪个位置。有三个可能的位置。其中一个编译失败,最外面的const清楚地声明了一个指向返回const void的函数的指针数组,我很惊讶编译器接受了该代码。 -
cdecl.org 对于那些偶尔询问“这个限定词适用于什么?”的时刻很有用
标签: c++ c function constants void