Привет!
Есть шаблон с таким началом:
template<typename THandle, THandle InvalidHandleValue, auto Deleter>
class WinHandle_t
Далее, определяются основные типы хэндлов с их инвалидом и делетером:
using WinHandle = WinHandle_t<HANDLE, INVALID_HANDLE_VALUE, &CloseHandle>;
Кланг не хочет это кушать:
C:\work\project\src/Common\WinHandle.h:43:44: error: non-type template argument is not a constant expression
using WinHandle = WinHandle_t<HANDLE, INVALID_HANDLE_VALUE, &CloseHandle>;
^~~~~~~~~~~~~~~~~~~~
C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\handleapi.h:27:30: note: expanded from macro 'INVALID_HANDLE_VALUE'
#define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1)
Это можно как-то поправить без правки сорцов? Ключик совместимости какой ему подсунуть? О себе он так говорит:
clang -cc1 version 13.0.1 based upon LLVM 13.0.1 default target x86_64-pc-windows-msvc