通过模板定义 main()

Defining main() via a template

注意,我知道 this question,但我想要的不一样。

我当前的代码(我的 main.cpp 的总和)看起来像这个用于将 class 制作成可执行文件的标准样板:

#include <MyHeader.h>
int main(int argc, char **argv)
{
    return MyTemplate<MyClass>(argc, argv);
}

这工作很愉快,但如果我能做到就更好了:

#include <MyMainWrapper.h>
// UPDATE: commented out... MyMainWrapper<MyTemplate, MyClass> main;
MyMainWrapper<MyTemplate, MyClass> someObjectThatGeneratesMain;

这将扩展到上面的代码。它当然可以用宏轻松完成,但我很想看看是否有模板解决方案,如果没有,为什么不呢?

更新:我想象一个函数模板可能以某种方式做:

template<...>
extern "C" int main(int argc, char **argv)
{
   //...
}

但我看到模板不能 extern "C"

没有模板解决方案,因为main是纯C接口

由于为模板专业化添加了所有修饰,linker 没有机会知道您的 "main".

到底应该是什么
#include <MyMainWrapper.h>
MyMainWrapper<MyTemplate, MyClass> main;

这也不是一个函数,因此它与所需的签名不匹配。它可能是可调用的,但这是 C++ 添加的语法糖,而不是 link.