C++20: концепции и CRTPC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 C++20: концепции и CRTP

Сообщение Anonymous »

Я пытаюсь использовать концепции и шаблон CRTP в своем проекте, но вижу ошибки компиляции при использовании как gcc-12, так и MSVC 2022. Вот упрощенный код:

Код: Выделить всё

namespace Test
{
namespace concepts {
template
concept SupportsFn = requires(T t, int k) {
{
t.fn(k)
};
};
}

template
class CD {
static_assert(concepts::SupportsFn);
public:
void call(int k) {
this->fn(k);
}
};

template
class BD : public CD {
static_assert(concepts::SupportsFn);
public:
void call2(int k) {
this->fn(k + 2);
}
};
}

class ED : public Test::BD {
public:
void fn(int k) {
std::cout       C:\temp\memfnexpt\memfnexpt\memfnexpt.cpp(368,2):
1>      see declaration of 'Test::BD'
1>      C:\temp\memfnexpt\memfnexpt\memfnexpt.cpp(367,11):
1>      the concept 'Test::concepts::SupportsFn' evaluated to false
1>          C:\temp\memfnexpt\memfnexpt\memfnexpt.cpp(353,5):
1>          use of undefined type 'ED'
1>          C:\temp\memfnexpt\memfnexpt\memfnexpt.cpp(377,7):
1>          see declaration of 'ED'
1>          C:\temp\memfnexpt\memfnexpt\memfnexpt.cpp(353,7):
Как использовать концепции CRTP и обойти эту ошибку?

Подробнее здесь: https://stackoverflow.com/questions/791 ... s-and-crtp
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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