是否允许限定函数类型作为模板参数 (C++98)

Is qualified function type permitted as template parameter (C++98)

我有三个编译器(大约是 C++98),我正在尝试在其中编译一些模板。模板将函数类型作为参数。

如果我尝试在 C++11 编译器中编译,那么只要函数类型是 cv 限定的,它就可以工作。如果 cv 合格,则三个 C++98 编译器中有两个无法编译。

在 C++98 编译器中这是正确的行为吗?

是的,最初的 C++98 标准不允许将 const 限定符应用于任何函数类型,包括模板参数。

这后来被更改,因此 const T 将始终有效但等效于函数类型的普通 T,但是实现原始 C++98 标准的编译器将检测 const T 作为函数类型时 T 的错误。

缺陷报告:295. cv-qualifiers on function types