我目前正在调试我们构建中的一个问题,其中在可变参数中,参数的数量与预期不符。
目前我的代码看起来类似于:
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{}};
根据这段代码,人们会期望 2 个参数被传递给 Ctor。
令人惊讶的是,此代码在 MSVC 中按预期运行,但在带有 Clang 的 static_assert 上失败。
你们中的任何人都知道强制 clang 揭示它假设可变参数包是什么的技巧吗?
编辑问题与需要抛出的复制构造有关,非常特定于 Clang-Cl