Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Решить проблемы с дополнительными операциями над ДК #71

Open
izvolov opened this issue Jul 29, 2017 · 2 comments
Assignees
Labels

Comments

@izvolov
Copy link
Owner

izvolov commented Jul 29, 2017

Проблема

В настоящий момент существуют проблемы с некоторыми операциями над ДК, в частности:

  1. Копирование ДК разрешается, но если внутрилежащий объект некопируем, то в процессе копирования ДК выбрасывается исключение.
  2. Сравнение двух ДК невозможно.

Предлагаемое решение

Ввести свойства ДК, передаваемые ему в качестве параметров шаблона, которые будут регламентировать дополнительные операции: burst::dynamic_tuple<burst::copyable>, burst::bynamic_tuple<burst::comparable> (интерфейс ещё нужно продумать) и т.п.

Соответственно, если ДК некопируем, то в него невозможно будет положить некопируемый объект, а если копируем, то возможно.

Аналогично и с операцией сравнения и, возможно, какими-то другими операциями.

@izvolov izvolov self-assigned this Jul 29, 2017
@kotbegemot
Copy link

@izvolov привет, а почему нельзя наложить ограничения на объекты которые буду внутри дк ?

@izvolov
Copy link
Owner Author

izvolov commented Feb 7, 2018

@kotbegemot Вся соль в том, что в момент конструирования ДК мы ещё не знаем, какие объекты в нём будут лежать, потому что туда можно положить вообще всё, что угодно. Информация об объекте, который кладётся в ДК узнаётся только собственно в момент укладки. Естественно, эти объекты могут сильно отличаться по свойствам: один копируем, другой нет, один умеет равенство, другой нет, один умеет "меньше", другой нет и т.д. и т.п. в любых комбинациях.

Далее, при создании ДК мы ещё не знаем, какие операции мы хотим проделывать с самим ДК. Будем ли мы его копировать, переносить, сравнивать или что-либо ещё. А от этого по идее и должно зависеть то, какие объекты в него можно сложить.

Эта неопределённость и рождает указанную проблему.

Поэтому в качестве решения я и хочу при создании ДК регламентировать операции, которые я с ним буду иметь право проводить, а складываемые объекты будут проверяться на соответствие этим операциям.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants