gpt4 book ai didi

c++ - 为什么在 STL 中允许

转载 作者:太空狗 更新时间:2023-10-29 19:37:19 24 4
gpt4 key购买 nike

我看到模板不能用 double 定义,因为它不是整数值。例如,以下代码将无法编译:

template <double x> double func()
{
return x;
}

但是,我想知道为什么在STL中允许定义double的容器?谢谢!

最佳答案

您正在混合类型名称和类型实例。当你这样做时:

template <int a> struct A {};

您正在声明一个模板结构,该结构将因标签而异,并且该标签是一个整数。因此,A<1>A<2>将是完全不同的类型。

当你这样做时:

template <typename T> struct A { T a; A(T a) : a(a) {} };

您声明的模板结构因给定类型而异。因此,您不能这样写:A<1>A<2>12不是类型而是值。

你会写 A<int>并且任何 int 都将使用该相同类型,所以 A<int> a(1)A<int> b(2) 完全相同的类型

关于c++ - 为什么在 STL 中允许 <double>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57888620/

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