我有以下類別:我如何專注/重載一個模板函數的模板類型
template <class... T>
class thing {};
template <class T>
class container {
public:
container() {
std::cout << "normal constructor" << std::endl;
}
};
我可以寫的container<int>
以這種方式構造一個完整的專業化:
template <>
container<int>::container() {
std::cout << "int constructor" << std::endl;
}
我希望能夠爲container<thing<T>>
定義一個類似的構造函數。我想我試圖寫一個模板函數的偏特這裏是我試圖(這是非法的。):
template <class T>
container<thing<T>>::container() {
}
這並不編譯。
我不完全確定解決這個問題的正確方法是什麼,模板類函數的重載和專業化之間的界限變得模糊。這可以微不足道地解決,還是需要type_traits(std::enable_if
)?我該如何解決這個問題?
非常優雅的解決方案(恕我直言) – max66
@ max66謝謝。整個班級的部分專業化很快就會導致代碼重複,如果可能的話,我通常會盡量避免它。 – skypjack
@ max66僅在多個_specialized_構造函數的情況下添加更多細節。我希望你也喜歡它。 ;-) – skypjack