我刚刚开始思考这个问题。每个 C++ 模板都可以替换为返回类(或函数)对象的“普通”函数吗?正常意味着编译时程序。
所以我想用“普通函数(意味着在编译器解析树或类似的东西上工作的编译时程序)”替换 C++ 编译中的模板实例化,我不想使用 declerative 语法。
你认为通过下面的思路我们可以替换C++中的整个模板机制吗?你认为这种方式更容易理解模板吗?我知道这个问题有点理论,但我不知道在哪里讨论这个问题的最佳地点。
template<typename T>
struct A
{
int foo();
bool bar;
T data;
};
#if 0
class A(typename T) // class bulder after "("
{
class ret; // class object can only declared in class builder
ret.name = "whatever_compile_time_string";
ret += body // body is a class builder member with class declaration syntax
{
body(); // constructor
~body(); // destructor
int foo(); // method
bool bar; // member
};
ret += member(T, "data"); // "inject" a templated member
return ret;
}
#endif
int main()
{
A<int> a;
#if 0
// create a new class
typedef new class A(int) AInt;
// or
typedef new class A(int); // in this case class.name must be an initialized thing
#endif
}