Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"funktion": en funktion som returnerar "auto eller decltype(auto)" kan inte användas innan den definieras
Anmärkningar
Det auto gick inte att härleda returtypen för det angivna funktionsanropet. Kompilatorn hade inte tillräckligt med information på anropsplatsen.
Det här felet kan inträffa när du anropar en framdeklarerad medlemsfunktion som har en auto returtyp men ingen kropp eller avslutande returtyp. Du kan också få det här felet när kompilatorn inte kan hitta en kandidatreturtyp när den instansierar en mallspecialisering. En vanlig orsak till det här felet är ett gränssnittshuvud som saknas. Den saknade typen kan ofta fastställas utifrån det typnamn som anges i en anteckning som följer på det här felet. Lös problemet genom att inkludera rubriken för namnområdet som typen finns i för varje typ du använder.
Example
Följande C++/WinRT-exempel genererar C3779:
// C3779.cpp
#include <winrt/Windows.Gaming.Input.h>
void CheckGamepads()
{
auto gamepads =
winrt::Windows::Gaming::Input::Gamepad::Gamepads();
for (auto&& gamepad : gamepads)
{
check(gamepad);
}
}
Den här koden rapporterar ett fel:
C3779.cpp(8): error C3779: winrt::impl::consume_Windows_Foundation_Collections_IIterable<D,winrt::Windows::Gaming::Input::Gamepad>::First': a function that returns 'auto' cannot be used before it is defined
with
[
D=winrt:::Windows:::Gaming:::Input:::Gamepad
]
note: see declaration of 'winrt::impl::consume_Windows_Foundation_Collections_IIterable<D,winrt::Windows::Gaming::Input::Gamepad>::First'
with
[
D=winrt::Windows::Gaming::Input::IVisualCollection
]
Anteckningen anger att definitionen av returtypen beror på Windows::Foundation::Collections::IIterable. Lös problemet genom att inkludera rubriken för dess innehållande namnområde:
// C3779b.cpp
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Gaming.Input.h>
void CheckGamepads()
{
auto gamepads =
winrt::Windows::Gaming::Input::Gamepad::Gamepads();
for (auto&& gamepad : gamepads)
{
check(gamepad);
}
}
Se även
Använda API:er med C++/WinRT
Varför får mitt C++/WinRT-projekt fel av typen "consume_Something: funktion som returnerar 'auto' kan inte användas innan den har definierats"?