C++模板特化的一个BUG?
生活随笔
收集整理的這篇文章主要介紹了
C++模板特化的一个BUG?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一,模板如下:
#pragma once #include<cstdio>template<typename T1> class TestSpecializeBug { public:TestSpecializeBug() {printf("基礎(chǔ)模板\n");}void Func() {//這一行是導(dǎo)致問題的原因TestSpecializeBug<int*> ot1; //Flag} };template<typename T1> class TestSpecializeBug<T1*> { public:TestSpecializeBug() {printf("特化版本\n");} };二,調(diào)用測試
int main() {TestSpecializeBug<int*> tps; }三,輸出結(jié)果
?
四,結(jié)論
Func函數(shù)的Flag標(biāo)記行是導(dǎo)致問題的原因,如果注釋掉這行,則main函數(shù)中的TestSpecializeBug<int*> tps語句將會匹配到偏特化的版本,輸出:特化版本
總結(jié)
以上是生活随笔為你收集整理的C++模板特化的一个BUG?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++类模板特化全总结
- 下一篇: C++2 dimension vecto