C ++ التخصص قالب وظيفة: "الاستخدام غير المشروع للحجج قالب صريحة"
-
06-07-2019 - |
سؤال
وفيما يلي التعليمات البرمجية قالب التخصص:
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>
.
لا تنتمي إلى StackOverflow