Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
'function': Funkce, která vrací "auto nebo decltype(auto)", nelze použít dříve, než je definována.
Poznámky
Návratový auto typ zadaného volání funkce nelze dedukovat. Kompilátor neměl dostatek informací v lokalitě volání.
K této chybě může dojít při volání členské funkce deklarované přesměrovávání, která má návratový auto typ, ale bez textu nebo koncového návratového typu. Tato chyba se může zobrazit také v případě, že kompilátor nemůže najít návratový typ kandidáta při vytvoření instance specializace šablony. Běžnou příčinou této chyby je chybějící hlavička rozhraní. Chybějící typ lze často určit z názvu typu uvedeného v poznámce, která následuje za touto chybou. Pokud chcete tento problém vyřešit, zahrňte pro každý typ, který používáte, záhlaví oboru názvů, ve kterém je typ.
Example
Následující příklad C++/WinRT generuje 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);
}
}
Tento kód hlásí chybu:
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
]
Poznámka znamená, že definice návratového typu závisí na Windows::Foundation::Collections::IIterable. Pokud chcete tento problém vyřešit, zahrňte hlavičku jejího oboru názvů:
// 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);
}
}
Viz také
Využívání rozhraní API pomocí C++/WinRT
Proč se v projektu C++/WinRT zobrazí chyby formuláře "consume_Something: funkce, která vrací "auto" nelze použít před jeho definováním?