3
考慮下面的代碼:默認值特
template <class x1, class x2 = int*>
struct CoreTemplate { };
template <class x1, class x2>
struct CoreTemplate<x1*, x2*> { int spec; CoreTemplate() { spec = 1; } };
template <class x>
struct CoreTemplate<x*> { int spec; CoreTemplate() { spec = 3; } };
int main(int argc, char* argv[])
{
CoreTemplate<int*, int*> qq1;
printf("var=%d.\r\n", qq1.spec);
CoreTemplate<int*> qq2;
printf("var=%d.\r\n", qq2.spec);
}
MSVC編譯該代碼細,並且選擇在兩種情況下,第二個特。對我而言,這些專業化是相同的。第一手合法性如何?
只是好奇,對此有何想法?
感謝您的評論。合理的建議。 –