Objawy

Podczas deklarowania funkcji zmienne szablonu jako znajomego szablonu klasy, kompilator języka C++ zwróci komunikat o błędzie zamiast akceptować kod. Na przykład po wykonaniu następującą deklarację:

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{};
};

Może zostać wyświetlony następujący komunikat o błędzie:

Błąd C2783: "void f (C < typów... >, < U > B)": nie można wywnioskować, argument szablonu dla 'U'

Przyczyna

Przyczyną jest to, że kompilator języka C++ nie może dopasować deklaracji funkcji zaprzyjaźnionej do istniejącej deklaracji.

Rozwiązanie

Ta aktualizacja jest dostępna w Centrum pobierania firmy Microsoft.

Centrum pobierania firmy Microsoft

Aby uzyskać więcej informacji dotyczących sposobu pobierania plików pomocy technicznej firmy Microsoft, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

119591 Jak uzyskać pliki pomocy technicznej Microsoft w usługach online

Firma Microsoft przeskanowała plik w poszukiwaniu wirusów. Firma Microsoft użyła najnowszego oprogramowania do wykrywania wirusów, które było dostępne w dniu opublikowania pliku. Plik jest przechowywany na serwerach o podwyższonych zabezpieczeniach, które uniemożliwiają nieautoryzowane zmiany w pliku.

Wymagania wstępne

Ta poprawka wymaga programu Visual Studio 2015 aktualizacji 3.

Informacje dotyczące ponownego uruchamiania

Może być konieczne ponowne uruchomienie komputera po zastosowaniu tej poprawki.

Informacje o zastępowaniu

Ta poprawka nie zastępuje żadnych wcześniej wydanych poprawek.

Informacje o plikach

Wersja anglojęzyczna tej poprawki ma atrybuty plików (lub nowsze) wymienione w poniższej tabeli. Daty i godziny odpowiadające tym plikom zostały podane w formacie uniwersalnego czasu koordynowanego (UTC, Coordinated Universal Time). Po wyświetleniu informacji o pliku są konwertowane na czas lokalny. Aby zobaczyć różnicę między czasem UTC i czasem lokalnym, należy użyć z karty Strefa czasowa w aplecie Data i godzina w Panelu sterowania.

Nazwa pliku

Wersja pliku

Rozmiar pliku

Data

Godzina

Platforma

VC14-KB4096429.exe

14.0.24240

19,177,304

04/19/2018

02:32 AM

X86

Obejście problemu

Aby obejść ten problem, nie deklarować zmienne funkcji szablonu jako znajomego szablonu klasy.

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?

Dziękujemy za opinię!

×