// p1: some value
// nt: native type
template<int p1, typename nt>
struct A {};
// pt: pointer to type i.e. int*
// tA: a specialization of A
template<typename pt, typename tA>
struct B1 {};
// pt: pointer to type i.e. int*
// tA: a specialization of A
template<typename pt, typename tA>
struct B2 {};
// tB: specialization of B?
// tA: specialization of A
template<typename tB, typename tA>
struct C {};
// now i want to create a C partial specialization where:
// A<some_value, native_type>
// B?<char*, A<some_value, native_type> >
template< template<typename, typename> class B, int p1, typename nt >
struct C< B<char*, A<p1, nt> >, A<p1, nt> > {};
int main()
{
C< B1, A<10, int> > c;
}
當編譯上面的代碼鏗鏘它給人的錯誤:使用類模板沒有通過模板參數
error: use of class template B1 requires template arguments
C< B1, A<10, int> > c;
^~
我理解錯誤,並修復它B1
應該B1<char*, A<10, int> >
。編譯器是否應該從最匹配的特化中扣除這些參數的值?
這是什麼編譯器?有些模板模板參數有問題。 – StoryTeller
ngng 3.2 for ubuntu –
'C'需要兩種類型。所以說'C