簡體   English   中英

類方法的部分特化

[英]Partial specialization for class method

我正在嘗試專門化(非模板化!)類的方法。 顯然,這是不可能的,但是我正在努力找出原因或如何克服這個問題。

class MyClass {

public:
        template <typename... T>
        auto MyMethod(T... t) -> void { std::cout << "Original" << std::endl; }

        template <typename... T>
        auto MyMethod<int, T...>(int value, T... t) -> void { std::cout << "Specialization" << value << std::endl; }

};

int main(void) {
        MyClass myClass;
        myClass.MyMethod<char, char>('c', 'c');
        myClass.MyMethod<int, char>(123, 'c');

        return 0;
}

只有類可以部分<\/em>特化; 方法只能完全<\/em>專業化。 由於您的方法仍然具有未指定的模板參數 ( T<\/code> ),這意味着部分方法特化。

如果您將這些模板參數用於一個類(並調用該類的非模板化成員函數),那么這應該是可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM