C ++ метод, чтобы определить, являются ли два класса одним и тем же шаблоном - PullRequest
0 голосов
/ 02 мая 2020

Предположим, у меня есть что-то вроде этого

template <class T> struct A{};

template <class T> struct B{};

struct x;
struct y;

int main(){

A<x> c1;
A<y> c2;
B<x> d1;

bool constexpr t=IsSame<c1,c2>::value; // t should be true at compile time
bool constexpr q=IsSame<c1,d1>::value; // q should be false at compile time
}

Как я могу определить класс со свойством IsSame, т.е. true, если два класса отличаются только по аргументу шаблона? Кроме того, есть ли способ определить класс, который является истинным, если два аргумента имеют один и тот же шаблон (в этом случае он должен возвращать true при применении к d1 и c1 и false на c1 и c2).

...