Как специализировать шаблон метода, используя концепции?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как специализировать шаблон метода, используя концепции?

Сообщение Anonymous »

Моя цель проста: я хочу специализировать шаблон метода для нескольких типов одновременно.
Я гуглил для возможных способов выполнения этой задачи и обнаружил, что для этого можно использовать концепции. < /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»