В настоящее время я отлаживаю проблему в нашей сборке, в которой количество аргументов не соответствует ожидаемому.
В настоящее время мой код выглядит следующим образом:
class CustomException : public BaseException
{
public:
template<typename ...T>
CustomException(T &&...args) : BaseException(std::forward<T>(args)...)
{
static_assert(sizeof...(T) == 2);
}
};
throw CustomException{size_t{}, size_t{}};
Исходя из этого кода, можно ожидать, что в Ctor передаются 2 аргумента.
Удивительно, но этот код работает, как и ожидалось, с MSVC и завершается с ошибкой в static_assert с Clang.
Кто-нибудь из вас знает хитрость, заставляющую кланга показать, что он предполагает набором переменных аргументов?
Редактировать Проблема связана со структурой копирования, которая требуется для броска, очень специфично для Clang-Cl