C ++ التخصص قالب وظيفة: "الاستخدام غير المشروع للحجج قالب صريحة"

StackOverflow https://stackoverflow.com/questions/1416345

سؤال

وفيما يلي التعليمات البرمجية قالب التخصص:

template<typename T1, typename T2>
void spec1()
{

}

واختبار حالة 1:

template< typename T1> //compile error
void spec1<int>()
{

}

واختبار حالة 2:

template< typename T2> //compile error
void spec1<int>()
{

}

ويولد خطأ الترجمة التالية:

<اقتباس فقرة>   

والخطأ C2768: 'spec1': الاستخدام غير المشروع للحجج قالب صريحة

لا أحد يعرف لماذا؟

هل كانت مفيدة؟

المحلول

والقوالب وظيفة لا يمكن أن تكون متخصصة جزئيا، إلا تماما، أي مثل ما يلي:

template<>
void spec1<char, int>()
{

}

لماذا القوالب وظيفة لا يمكن أن يكون جزئيا المتخصصة، قد ترغب في قراءة هذا .

عند متخصصون جزئيا (ممكن فقط لفئات)، عليك أن تفعل ذلك مثل ما يلي:

template <typename T1>
class class1<T1, int>
{

};

وبحيث يكون لديك لسرد T1 مرة أخرى.

والطريقة مكتوبة التخصصات الخاص بك، فإنها ستكون غامضة لspec1<int, int>.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top