מאפייני הבעיה
כאשר אתה מנסה להצהיר על תבנית הפונקציה variadic בתור חבר של תבנית מחלקה, מהדר C++ יחזיר הודעת שגיאה במקום לקבל את הקוד. לדוגמה, כאשר אתה מבצע את ההצהרה הבאה:
template<typename T>
struct B { };
template<typename... Types>
struct C { };
template<typename... Types, typename U>
void f(C<Types...>, B<U>)
{
}
template<typename T>
class A {
template<typename... Types, typename U>
friend void f(C<Types...>, B<U>);
};
int main()
{
f(C<int>{}, B<int>{});
A<int> a{};
};
ייתכן שתקבל את הודעת השגיאה הבאה:
שגיאה C2783: 'void f (C < סוגי... >, < U > B)': לא היתה להסיק את הארגומנט תבנית עבור 'U'
הגורם
הסיבה היא כי מהדר C++ אין אפשרות להתאים את ההצהרה של הפונקציה חבר הצהרת קיים.
פתרון
עדכון זה זמין במרכז ההורדות של Microsoft.
מרכז ההורדות של Microsoft
לקבלת מידע נוסף אודות אופן ההורדה של קובצי תמיכה של Microsoft, לחץ על מספר המאמר הבא כדי להציג את המאמר הרלוונטי מתוך Microsoft Knowledge Base:
119591 כיצד לקבל קבצי תמיכה של Microsoft משירותים מקוונים
Microsoft סרקה קובץ זה לאיתור וירוסים. Microsoft השתמשה בתוכנת איתור הווירוסים העדכנית ביותר שהיתה זמינה בתאריך פרסום הקובץ. הקובץ מאוחסן בשרתים בעלי אבטחה מוגברת המסייעים למנוע שינויים בלתי מורשים בקובץ.
דרישות מוקדמות
תיקון חם זה דורש 3 עדכון של 2015 Studio חזותי.
מידע על הפעלה מחדש
ייתכן שיהיה עליך להפעיל מחדש את המחשב לאחר החלת תיקון חם זה.
מידע על החלפות
תיקון חם זה אינו מחליף כל תיקון חם שפורסם בעבר.
פרטי קובץ
הגירסה האנגלית של תיקון חם זה כוללת את תכונות הקובץ (או תכונות קובץ מתקדמות יותר) המפורטות בטבלה הבאה. התאריכים והשעות המתייחסים לקבצים הללו רשומים לפי זמן אוניברסלי מתואם (UTC). כשמציגים את פרטי הקובץ, היא מומרת לזמן המקומי. כדי לברר את הפרש השעות בין זמן UTC לזמן המקומי, השתמש בכרטיסייה אזור זמן בפריט ' תאריך ושעה ' בלוח הבקרה.
שם קובץ |
גירסת קובץ |
גודל קובץ |
תאריך |
שעה |
פלטפורמה |
VC14-KB4096429.exe |
14.0.24240 |
19,177,304 |
04/19/2018 |
02:32 AM |
X86 |
פתרון הבעיה
כדי לעקוף בעיה זו, לא להצהיר על variadic פונקציה תבנית בתור חבר של תבנית מחלקה.