需要从标准中引用主函数作为模板函数的合法性

Need quote from standard about legality of main function as a template function

本文关键字:函数 合法性 标准 引用      更新时间:2023-10-16

心血来潮,我尝试使用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文件中声明。