不论模板类型如何,结构的C ++函数

马特

我有一组可在模板化类上工作的函数,但不依赖于类的模板化部分。

对函数进行模板化并允许其推导类型将起作用,但随后将编译为多个函数。

#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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章