Say, üye olan çeşitli türleri, TypeMathcer
için uzmanlaşmış bir şablon var.İsteğe bağlı bağımlı türdeki şablon konusunda uzmanlaşmak için nasıl
#include <memory>
#include <vector>
template <typename T>
struct TypeMatcher;
template <typename T>
struct TypeMatcher<T *>
{
// making some type from T
typedef std::shared_ptr<T> type;
};
template <typename T>
struct TypeMatcher<T&>
{
// making other type from T
typedef std::vector<T> type;
};
Şimdi, başka bir şablon oluşturmak ve ben TypeMatcher
aldığım türleri için bunu uzmanlaşmak istiyorum. Bu
template <typename T>
struct MyNeedfullTemplate;
template <typename T>
struct MyNeedfullTemplate<typename TypeMatcher<T>::type>
{
};
gibi, basit yaparsanız ben derleyici hatası alıyorum: template parameters not deducible in partial specialization
.
aynı hata varsa kullanım
template <typename T>
using type_matcher_t = typename TypeMatcher<T>::type;
template <typename T>
struct MyNeedfullTemplate;
template <typename T>
struct MyNeedfullTemplate<type_matcher_t<T> >
{
};
Cevabın bir karşı örnek mevcut tüm soru anlamsız yaparsa emin değilim hala soruma çok benzer partial specialization for iterator type of a specified container type ama sorgulamaya okumak using
sözdizimi. Ayrıca şimdi durumu değiştirebilecek yepyeni C++ 14 ve C++ 17 standartlarımız var. Öyleyse eğer uzmanlıkların benzersiz ve var olduğundan emin olursam, parametrelerin çıkarılabilir hale getirilmesinden başka bir olasılık var mıdır?
Tamam, anlıyorum. Ancak bu tür bir şablonun yerini alacak herhangi bir ortak model var mı?Özellikleri ya da bilmediğim başka şey gibi bir şey. – user2807083
@ user2807083 Potansiyel bir çözüm ekledim (kullanım durumunuzu doğru anladığımı varsayarak). – Angew
Oh, öyle. Bazı çözümlerin olduğundan şüpheleniyorum. – user2807083