C++模板特化的一个BUG?

一,模板如下:

#pragma once
#include

template
class TestSpecializeBug
{
public:
	TestSpecializeBug() {
		printf("基础模板\n");
	}

	void Func() {
        //这一行是导致问题的原因
		TestSpecializeBug ot1; //Flag
	}
};

template
class TestSpecializeBug
{
public:
	TestSpecializeBug() {
		printf("特化版本\n");
	}
};

二,调用测试

int main()
{
	TestSpecializeBug tps;
}

三,输出结果

 

四,结论

Func函数的Flag标记行是导致问题的原因,如果注释掉这行,则main函数中的TestSpecializeBug tps语句将会匹配到偏特化的版本,输出:特化版本

你可能感兴趣的:(c++,template)