2010-09-15 145 views

回答

14

不,他們不能。 C++ 0x標準草案在類模板部分專業化中有一節(14.5.5),但沒有提及功能模板部分專業化。

+0

這是我的理解,這是在C++ 0x。 – Puppy 2010-09-15 10:57:26

+0

@DeadMG:是的,我指的是C++ 0x標準草案,http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf – 2010-09-15 11:08:24

+0

僅供參考:最新草案現在是[N3126](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3126.pdf)[警告:大PDF]。答案在最新的草案中沒有什麼不同。 – 2010-09-15 11:20:20

-1

No; they were proposed as core language issue #229(來自n1295)但最終被拒絕(並且非常正確,因爲超載完成了這項工作)。

+16

我不得不不同意「非常正確」。重載並不總能完成這項工作,因爲我們不能只有返回類型不同的重載。這將是很好,如果我可以做類似如下,例如: 模板<類T,U類> T&富(){...} 模板無效美孚(){...} – 2014-10-01 16:31:08

+0

我同意超載是不夠的。假設我想用自定義的create_ *和destroy_ *函數爲舊的C結構重載std :: make_shared。在這種情況下,部分專業化將非常有用。 – AndyJost 2015-10-05 21:22:48

+3

對「非常正確」:「enable_if」有更多不同意見。如果我們可以部分專門化功能,我們可以避免使用標籤助手的笨拙攻擊。 – GreenScape 2016-06-01 10:40:34