Используйте пакет параметров и функцию шаблона, чтобы различить неназванные структурыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Используйте пакет параметров и функцию шаблона, чтобы различить неназванные структуры

Сообщение Anonymous »

Я написал концепцию C ++ 20-х годов MyRequirement :
template
concept myrequirement= requires(T s)
{
{ s.type() } -> std::same_as;
};

enum MyType
{
TYPE1,
TYPE2,
TYPE3,
};

< /code>
Таким образом, мои пользователи могут писать не намеченные структуры, которые удовлетворят это требование, как SO: < /p>
struct
{
static constexpr uint8_t type() { return TYPE1;}
} foo;

struct
{
static constexpr uint8_t type() { return TYPE2;}
} bar;

struct
{
static constexpr uint8_t type() { return TYPE3;}
} baz;
< /code>
Я хочу, чтобы пользователи могли получить правильную неназванную структуру в зависимости от их поля типа, как SO: < /p>
auto my_struct = get_instance();
< /code>
Я думал, что могу использовать параметры пакета c ++, чтобы иметь возможность написать что-то вроде этого: < /p>
template
constexpr auto& get_instance_amongst(const StructTypes&... structs)
{
// how do we do this ?
}

template
constexpr auto& get_instance()
{
return get_instance_amongst(foo, bar, baz);
}
< /code>
Я пробовал довольно много кода, но ничто не составляет ...
Есть ли что -то близкое к этому возможно? Может быть, с выражением сгиба?


Подробнее здесь: https://stackoverflow.com/questions/794 ... ed-structs
Ответить

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

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

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

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

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