2

Clang-CL 编译器错误:尚无法破坏此“自动”类型

语境 :

  • Clang-CL 编译尝试目前在我的几个代码库中导致以下错误:
cannot mangle this 'auto' type yet

由于此错误消息没有文件名或错误行,
因此很难找到其根本原因是什么代码。

此外,为了提供信息,这里是一个完整的日志,例如:

[1/2] Building CXX object tests\CMakeFiles\gcl_test_binary.dir\Main.cpp.obj
FAILED: tests/CMakeFiles/gcl_test_binary.dir/Main.cpp.obj 
  C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\Llvm\x64\bin\clang-cl.exe  /nologo -TP  -I..\..\..\includes -m64 -fdiagnostics-absolute-paths  /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 -std:c++latest /showIncludes /Fotests\CMakeFiles\gcl_test_binary.dir\Main.cpp.obj /Fdtests\CMakeFiles\gcl_test_binary.dir\ -c -- ..\..\..\tests\Main.cpp
gcl_cpp\out\build\x64-Clang-Debug\EXEC : error : cannot mangle this 'auto' type yet

1 error generated.
  ninja: build stopped: subcommand failed.

问题:有谁知道一个方便的技巧来识别该错误来自哪里?

提示我怀疑这部分编译器源代码(参见github 上的此处):

void MicrosoftCXXNameMangler::mangleType(const AutoType *T, Qualifiers,
                                         SourceRange Range) {
  assert(T->getDeducedType().isNull() && "expecting a dependent type!");

  DiagnosticsEngine &Diags = Context.getDiags();
  unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error,
    "cannot mangle this 'auto' type yet");
  Diags.Report(Range.getBegin(), DiagID)
    << Range;
}
4

0 回答 0