假設我有一個簡單的模板類:返回值爲模板參數的類模板從函數
template <typename ElementType, ElementType Element>
class ConsecutiveMatcher
{
public:
bool operator() (ElementType lhs, ElementType rhs)
{
return lhs == Element && rhs == Element;
}
};
我通常會做實例比ConsecutiveMatcher<wchar_t, L'\\'>()
簡單的通過提供可以推斷基於該模板參數類型的函數參數類型:
template <typename ElementType>
ConsecutiveMatcher<ElementType, Element /* ?? */>
MakeConsMatcher(ElementType Element)
{
return ConsecutiveMatcher<ElementType, Element>();
}
然而,在這種情況下,MakeConsMatcher(L'\\')
將無法正常工作,因爲函數需要返回一個類,其模板不僅包含類型,也是一種價值。
如何從一個函數中返回一個類模板,該函數不僅具有類型模板參數,還有值模板參數?
模板是編譯時的野獸。如果你在運行時使用各種'Element'值,你可以讓'Element'成爲一個構造參數嗎? – Drop
靜態類型在我的用例中是可以的,我只是尋找一種方法來省略'wchar_t'並在實例化過程中使用自動類型推導。我想這是不可能的。 –