gpt4 book ai didi

C++:如何测试编译错误以检查约束

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:14 27 4
gpt4 key购买 nike

我使用模板编写了 C++ 类型的约束。现在我想在我的测试套件中测试它们,以便注意到行为何时中断。

想想Field像这样上课。

template <size_t Size>
class Field {
template<size_t Offset, size_t Count>
Field<Count> SubString(typename std::enable_if<(Size >= Offset + Count)>::type* = 0) const {
return Field<Count>(data_.substr(Offset, Count));
}
}

Field<5>("abcde").SubString<3,4>()不编译,因为 enable_if条件失败。我正在寻找一种方法来检查这一点。

我想到了编写一个脚本来实际编译该表达式并检查返回值,但我更喜欢用 C++ 完成。编译器是 g++ (GCC) 4.8.3 20140911 .欢迎依赖编译器的方法。

最佳答案

"prefer to complete in C++"

我不知道有任何通用方法可以用任何编译器来做到这一点。对于您非常具体的示例,您可以破解一些东西 - 例如一个 SubString 重载,当 enable_if 失败时匹配,并对返回类型的大小进行静态断言。

但是对于更复杂的测试,通常有一个测试“系统”来编译和运行各种具有各种数据的 C++ 程序,有时确保它们正常终止,有时它们无法编译等。恕我直言,您不妨开始着手解决这个问题,而不是针对特定测试进行复杂的黑客攻击,因为从长远来看,它将证明更有用和灵活。

关于C++:如何测试编译错误以检查约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26905832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com