我想确保 static_assert 在单元测试中正常工作。也就是说,如果我有一个
class MyClass {static_assert(my_type_trait<T>::value, "error"); };
然后在单元测试MyClass<TypeWithTrait> myClass;
应该“通过”和MyClass<TypeWithoutTrait> myClass;
应该“失败”。
有没有可能做这样的事情?
最佳答案
如果你想检查某些东西是否编译失败,你必须在代码外部测试它。只需编写一个简单的文件,如:
#include "MyClass.h"
int main() {
MyClass<%T%> m;
}
然后编写一个单元测试,用不同的 %T%
值编译该文件。验证编译是按预期成功,还是按预期失败并在失败文本中显示有关 static_assert
的内容。
关于c++ - 在单元测试中验证 static_assert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278945/