如何操作不同的类只是一个功能

时间:2010-06-05 22:08:34

标签: c++ class overloading operator-keyword

class A {};

class B {};

class C {};

class D {};

//A+B , A+C, B+C , A+D, D+C  namely all of these combinations will be possible just one functions 

1 个答案:

答案 0 :(得分:2)

template <typename T, typename U>
void foo(const T& pX, const U& pY)
{
    // do stuff
}

这不是您想要的,因为它为TU的每个不同组合创建了新功能,但它是一个功能模板。


这禁止TU相同:

template <bool> struct static_assert {};
template <> struct<true> static_assert {};

#define STATIC_ASSERT(pValue) static_assert<(pValue)>()

// ...

template <typename T, typename U>
struct is_different
{
    static const bool value = true;
};

template <typename T>
struct is_different<T, T>
{
    static const bool value = false;
};

// ...

template <typename T, typename U>
void foo(const T& pX, const U& pY)
{
    STATIC_ASSERT(is_different<T, U>::value);

    // do stuff
}