我无法准确理解下面的C++代码行。
为什么第1行在T没有出现在第1行时使用模板?这是否意味着当结构位被声明为特定模板类型时(如bits<float>
),它只是在结构体内部typdef unsigned char type;
?无模板变量的模板类型和使用此类模板的其他模板类型
在第2行,这是否意味着如果我声明struct bits<const float>
,它也intitlaizes结构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
这与** C **没有任何关系。 C和C++在位级别上是完全不同的语言 - C中没有模板。请停止垃圾邮件标签。 –
我想有一些其他的(完整的)专业化,否则部分专业化大多是无用的。 – Jarod42