gpt4 book ai didi

c++ - C++ 中的模板参数太多?

转载 作者:太空狗 更新时间:2023-10-29 20:15:34 25 4
gpt4 key购买 nike

<>我使用 C++ 并计划一个包含大约 100 个模板参数的类的库。当然,我担心有 n 个模板参数,如果用户需要每个组合,我们有 2^n 个不同的类,这是一种代码爆炸。但是,用户需要为此执行 2^n 次实例化。

我的问题是:这么多模板参数的主要技术问题是什么?

注意事项:

  • 对于技术,我对有关可读性、设计等的主观答案不感兴趣。我的意思是像这样的事实
    • 运行时
    • 代码大小
    • 允许的最大模板数

代码示例:

// here we have 2, but I have 100 template parameters
template<typename T1, typename T2>
class Class
{
T1 x;
T2 y;
int add(T1 _x, T2 _y) { return _x+_y; } // 4 instanciations possible?
Class<T2, T1>* swap() { return new Class<T2, T1>(); } // always 2 instanciations?
};

最佳答案

实际上,模板化的类类型是在编译时确定的。这并不意味着你有 2^n 个不同的类,而是你只有 n 个类。在编译时,适当的类型被替换,类成员/函数只是您使用它们的类型。

例如

template <class Type1, class Type2>
class A
{
private:
Type1 member_x;
public:
Type2 GetTypeValue(Type1, Type2);
};

像这样实例化时:

A<int, string> *x = new A<int, string>();

仅作为具有整数类型成员和字符串类型成员的类进行编译。 Same 代表函数等。

更新:对于下面更新的示例,您仍然只有一个函数实例,它将是一个 string 返回函数,该函数采用参数 intstring

关于c++ - C++ 中的模板参数太多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12620674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com