gpt4 book ai didi

c++ - 具有非类型模板参数的别名模板

转载 作者:行者123 更新时间:2023-12-02 17:57:52 29 4
gpt4 key购买 nike

我的期望是这段代码无法编译,但它可以。这段代码如何工作?即使整数也不是模板。

template <int>
using A = int;

void f(A<4> foo = 0);

不是这样吗?

void f(int<4> foo = 0);

最佳答案

Doesn't it come this way?

没有。

A是别名模板。它有一个未命名的未使用 int范围。无论使用什么参数A始终是 int 的别名.那就是using A = int;意味着。

函数声明基本上就是

void f(int foo = 0);

也许你对未命名未使用的模板参数并不熟悉。别名可以等效地写成:

template <int Value>
using A = int;

作为Value未使用其名称可省略。


也许您对int感到困惑在别名模板中出现两次。第一个int是(未命名未使用的)参数,第二个 int是别名类型,两者无关。

您可以使用 int 编写类似的别名别名的参数 double :

template <int>
using B = double;

这里有B<n>double 的别名.

或者你可以用类型参数写类似的别名到别名int :

template <typename>
using C = int;

这里有C<T> ,例如 C<std::string>C<foo>int 的别名.

关于c++ - 具有非类型模板参数的别名模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75231756/

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