Clang не хочет канпелять MSVC-шный код
От: пффф  
Дата: 04.05.23 16:15
Оценка:
Привет!

Есть шаблон с таким началом:
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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.