尽管存在专用功能,是否可以调用非专用模板功能?

时间:2019-07-31 10:07:20

标签: c++ templates template-specialization

如果我具有专业化的模板功能,是否可以显式调用非专业化的模板?

\left

我的用例是我想编写单元测试,以确保泛型函数及其专业化产生相同的结果。

1 个答案:

答案 0 :(得分:2)

否,专业化 bitCount<std::uint64_t>

如果您有一个#define用于测试,则可以在测试期间使bitCount超载

template<class IntegerType>
inline IntegerType bitCount(IntegerType bitset)
{
  puts("general");
  return 0;
}

#ifndef(TEST_BITCOUNT)
template<>
#endif
inline std::uint64_t bitCount(std::uint64_t bitset)
{
  puts("specialized");
  return 0;
}