【发布时间】:2020-12-24 10:19:06
【问题描述】:
我正在尝试为我的模板化数学课程生成准确的代码覆盖率。我默认使用here 中的技巧实例化模板类中的每个方法
template class Vector2D<float>;
这样覆盖率并不总是 100%,而是向我展示了从未调用过函数的地方。问题是,如果我更进一步并使用 type traits 为某些类型启用模板类的成员函数,那么这些的覆盖率又总是 100%。 gcov 和 llvm-cov 都表明没有生成这些函数。 我猜是因为这些函数在我的模板类中是它们自己的“模板”?
template<typename T>
class Vector2D {
...
template <class U = T>
typename std::enable_if<std::is_floating_point<U>::value, void>::type rotate(
T angle) {
...
}
};
我如何(默认)实例化这些函数,以便覆盖率报告在它们从未被调用时以橙色/红色显示它们?
【问题讨论】:
-
不确定但是...您是否尝试过将
using定义为using foo_type = decltype(std::declval<Vector2D<float>>().rotate(0.0f))或类似的东西?
标签: c++ templates code-coverage typetraits