是否允许限定函数类型作为模板参数 (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
的错误。
我有三个编译器(大约是 C++98),我正在尝试在其中编译一些模板。模板将函数类型作为参数。
如果我尝试在 C++11 编译器中编译,那么只要函数类型是 cv 限定的,它就可以工作。如果 cv 合格,则三个 C++98 编译器中有两个无法编译。
在 C++98 编译器中这是正确的行为吗?
是的,最初的 C++98 标准不允许将 const
限定符应用于任何函数类型,包括模板参数。
这后来被更改,因此 const T
将始终有效但等效于函数类型的普通 T
,但是实现原始 C++98 标准的编译器将检测 const T
作为函数类型时 T
的错误。