gpt4 book ai didi

c++ - 尽管存在专用函数,但是否可以调用非专用模板函数?

转载 作者:行者123 更新时间:2023-11-30 03:15:07 30 4
gpt4 key购买 nike

如果我有一个特化的模板函数,是否可以显式调用非特化模板?

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

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

int main() {
std::uint64_t x = 1<<5;
std::cout << bitCount(x) << '\n'; //specialized
std::cout << bitCount<std::uint64_t>(x) << '\n'; //specialized
return 0;
}

我的用例是我想编写单元测试以确保通用函数及其特化产生相同的结果。

最佳答案

不,专业 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;
}

关于c++ - 尽管存在专用函数,但是否可以调用非专用模板函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57288282/

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