Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'function': uma função que retorna 'auto ou decltype(auto)' não pode ser usada antes de ser definida
Observações
O auto tipo de retorno da chamada de função especificada não pôde ser deduzido. O compilador não tinha informações suficientes no local de chamada.
Este erro pode ocorrer quando se chama uma função membro declarada antecipadamente que tem um tipo de auto retorno, mas nenhum corpo ou tipo de retorno posterior. Você também pode obter este erro quando o compilador não consegue encontrar um tipo de retorno candidato ao instanciar uma especialização de template. Uma causa comum desse erro é um cabeçalho de interface ausente. O tipo ausente muitas vezes pode ser determinado a partir do nome do tipo mencionado em uma nota que segue esse erro. Para resolver esse problema, para cada tipo que você usa, inclua o cabeçalho para o namespace em que o tipo está.
Example
O seguinte exemplo de C++/WinRT gera 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);
}
}
Este código relata um erro:
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
]
A nota implica que a definição do tipo de retorno depende de Windows::Foundation::Collections::IIterable. Para resolver o problema, inclua o cabeçalho do namespace que o contém.
// 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);
}
}
Consulte também
Consumir APIs com C++/WinRT
Por que meu projeto C++/WinRT recebe erros do formulário "consume_Something: a função que retorna 'auto' não pode ser usada antes de ser definida"?