验证单元测试中的static_assert

Dav*_*ria 6 c++ unit-testing googletest c++11

我想确保static_assert在单元测试中正常工作.也就是说,如果我有一个

class MyClass {static_assert(my_type_trait<T>::value, "error"); };
Run Code Online (Sandbox Code Playgroud)

然后在单元测试中MyClass<TypeWithTrait> myClass;应该"通过"并且MyClass<TypeWithoutTrait> myClass;应该"失败".

可以这样做吗?

Bar*_*rry 5

如果您想检查某些内容是否无法编译,则必须在代码外部对其进行测试。只需编写一个简单的文件,例如:

#include "MyClass.h"

int main() { 
    MyClass<%T%> m;
}
Run Code Online (Sandbox Code Playgroud)

并编写一个单元测试,用不同的%T%. 验证编译是否按预期成功,或按预期失败并static_assert在失败文本中显示有关内容。