gpt4 book ai didi

c++ - 如何重用函数特化代码?

转载 作者:行者123 更新时间:2023-11-30 01:50:42 26 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

template<typename T>
void fun(const T & val)
{
cout << " T " << endl;
}

template<>
void fun<int>(const int & val)
{
cout << " specialization same code " << val << endl;
}

template<>
void fun<double>(const double& val)
{
cout << " specialization same code " << val << endl;
}


int main()
{
fun( 1 );
fun( 1.0 );
fun( 'c' );
return 0;
}

问题> 有什么方法可以重用函数特化代码吗?例如,假设“int”和“double”特化具有完全相同的实现代码。有什么方法可以防止代码重复?

http://codepad.org/awGYWiWv

谢谢

最佳答案

按照 @0x499602D2 在评论中的建议,创建另一个函数并确保它只被 intdouble 调用。

template<typename T>
void bar(const T & val)
{
// Make sure this gets called only for int or double.
static_assert(std::is_same<T, int>::value || std::is_same<T, double>::value);

// Do useful stuff with val.
}

template<>
void fun<int>(const int & val)
{
bar(val);
}

template<>
void fun<double>(const double& val)
{
bar(val);
}

关于c++ - 如何重用函数特化代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113721/

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