Я гуглил для возможных способов выполнения этой задачи и обнаружил, что для этого можно использовать концепции. < /p >
Я создал упрощенную тестовую программу, которая напоминает мою целевую, чтобы проверить, как работают концепции: < /p>
Код: Выделить всё
#include
#include
class A {
public:
std::string getName() const { return "A"; }
};
class B {
public:
std::string getName() const { return "B"; }
};
class C {
public:
std::string getName() const { return "C"; }
};
class D {
public:
std::string getName() const { return "D"; }
};
// Concept for classes C and D
template
concept IsCorD = std::same_as || std::same_as;
// User class with the method template
class User {
public:
// Primary template declaration
template
void doSomething();
};
// Specialization for A
template
void User::doSomething() {
std::cout
Члены сообщества предположили, что этот вопрос может быть дубликатом того, почему я могу определить частичную специализацию для шаблонов функций?. Я проверил ответы на этот вопрос, и они предлагают использовать std :: enable_if Подробнее здесь: https://stackoverflow.com/questions/794 ... g-concepts
Мобильная версия