Есть ли способ вывести параметры вложенного шаблона? [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ вывести параметры вложенного шаблона? [дубликат]

Сообщение Anonymous »

У меня два класса:

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

template 
class Model;

template 
class Mesh;
Мне нужна модель, которая бы содержала Mesh в качестве члена, но со следующими ограничениями:
Если Model, членом должен быть Mesh. Если Model, то элементом может быть либо Mesh, либо Mesh.
Я пытаюсь использовать концепции чтобы решить эту проблему, и уже написал:

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

template 
concept validMesh = requires (Tp model, TMp mesh)
{
std::floating_point&& std::floating_point && (std::same_as || std::same_as);
};

template 
requires std::floating_point
class Mesh {
public:
Mesh() = default;
};

template 
requires validMesh
class Model {
public:
Model(Mesh mesh) : mesh{ mesh } { };

private:
Mesh mesh;
};
Это работает, и я могу использовать его следующим образом:

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

Mesh mesh;
Model model(mesh);
Но если я хочу использовать Mesh и Model, мне нужно указать оба параметра шаблона при создании экземпляра Model, то есть:

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

Mesh mesh;
Model model(mesh);
Почему он не способен вывести TMp? То есть, почему не работает следующее:

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

Mesh mesh;
Model model(mesh);
Разве компилятор не должен знать, что сетка, передаваемая в конструктор, имеет тип Mesh? И, таким образом, не должен ли TMp быть выведен как float? Возможно, я в любом случае преследую что-то, что будет нечитабельно, это была всего лишь моя первая попытка реализовать это, и я был удивлен, когда это не сработало.

Подробнее здесь: https://stackoverflow.com/questions/785 ... parameters
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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