我有一组可在模板化类上工作的函数,但不依赖于类的模板化部分。
对函数进行模板化并允许其推导类型将起作用,但随后将编译为多个函数。
#include <iostream>
template<typename T>
struct MyStruct {
int a;
T b;
};
bool isLess(MyStruct& lhs, MyStruct& rhs) {
return lhs.a < rhs.a;
}
int main(int argc, char const *argv[])
{
MyStruct<int> x {123, 456};
MyStruct<int> y {789, 123};
std::cout << isLess(x, y) << std::endl;
return 0;
}
有没有办法做到这一点?
重构不依赖于场T
中的另一个类。使MyStruct<T>
从它继承:
struct MyStructBase
{
int a;
};
template<typename T>
struct MyStruct : MyStructBase
{
T b;
};
bool isLess(MyStructBase& lhs, MyStructBase& rhs) {
return lhs.a < rhs.a;
}
int main(int argc, char const *argv[])
{
MyStruct<int> x {123, 456};
MyStruct<int> y {789, 123};
std::cout << isLess(x, y) << std::endl;
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句