gpt4 book ai didi

c++ - 没有模板变量的模板化类型和其他使用这样的模板化类型

转载 作者:行者123 更新时间:2023-11-30 03:29:30 25 4
gpt4 key购买 nike

我不能完全理解下面的 C++ 代码行。
当 T 没有出现在第 1 行时,为什么第 1 行使用模板?这是否意味着当使用某种模板类型声明结构位时(如 bits<float> ),它只是 typdef unsigned char type;在结构里面?

在第 2 行中,如果我声明 struct bits<const float> 是否意味着, 它还包含一个结构 bits<float>使用第 1 行?意思是像 bits<float> ?
如果有人解释此代码的作用或向我推荐有关此主题的良好引用,我将不胜感激。

    /// Type traits for floating point bits.
template<typename T> struct bits { typedef unsigned char type; }; // line 1
template<typename T> struct bits<const T> : bits<T> {}; // line 2
template<typename T> struct bits<volatile T> : bits<T> {}; // line 3
template<typename T> struct bits<const volatile T> : bits<T> {}; // line 4

最佳答案

没有理由模板必须使用模板参数。未使用的参数可用于描述与模板参数本身无关的模板化类/函数/变量的不同版本。

template<int N> bool f();
template<1> bool f(){return true;};
template<0> bool f(){return false;};

在第 2 行中,bits<const T>继承自 bits<T> .它没有初始化 bits<T> 的实例,但获得了它的所有部分,就好像它是它自己的一部分一样。当 bits<const T> 时发生的一切初始化的是它会定义一个类型type ,就像它对 bits<T> 所做的一样.

关于c++ - 没有模板变量的模板化类型和其他使用这样的模板化类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670006/

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