心血来潮,我尝试使用clang 2.9将main函数定义为模板函数:
template <typename T = void>
int main(int argc, char **argv)
{
}
并收到以下错误。
error: 'main' cannot be a template
int main(int argc, char **argv)
^
有谁知道标准的哪个部分禁止这样做,以及相关的文本是什么?
那么,这个(3.6.1)怎么样:
程序应该包含一个名为main的全局函数,它是程序的指定起始点。[…此函数不得重载。它的返回类型必须是int,否则它的类型是由实现定义的。
既然模板不是函数,我认为你没有选择的余地。特别地,函数必须是main
,而不是你例子中的main<>
;你的main
不是一个函数,而是一个模板,排除了另一个叫做main
的函数的存在。
函数模板必须在。h文件中声明。