gpt4 book ai didi

C++模板默认参数

转载 作者:行者123 更新时间:2023-11-28 00:18:13 25 4
gpt4 key购买 nike

我知道简单模板和模板特化的工作原理,但我对此感到困惑。

程序第一行的T t = T()是做什么的?这是默认参数吗?以及如何确定程序的输出?

#include <iostream>

template<class T, T t = T()>
class A
{
private:
template<bool b>
class B
{
public:
static const int m_n = b ? 1 : 0;
};

public:
static const int m_value = B<(t > T())>::m_n - B<(t < T())>::m_n;
};

int main()
{
std::cout << A<int, -9>::m_value
<< A<bool, true>::m_value
<< A<char>::m_value << std::endl;

return 0;
}

这是一道关于 C++ 评估测试的问题,我正在努力理解。

最佳答案

是的。第二个参数是这个模板的默认参数。

如果您知道这一点,那么确定输出应该相当简单。我会为你做第一个:

A<int, -9>::m_value

intT使用的数据类型,int t的值为-9

这一行:

static const int m_value = B<(t > T())>::m_n - B<(t < T())>::m_n;

这样计算(其中 int() 为零):

static const int m_value = B<(-9 > 0)>::m_n - B<(-9 < 0)>::m_n;

评估如下:

static const int m_value = B<false>::m_n - B<true>::m_n;

评估如下:

static const int m_value = 0 - 1;

最终评估如下:

static const int m_value = -1;

所以:

std::cout << A<int, -9>::m_value

等同于:

std::cout << -1

现在尝试自己找出其余部分。

关于C++模板默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28917941/

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