Skip to content

Предлагается добавить в язык механизм compile-time контроля времени жизни объектов #637

@rsashka

Description

@rsashka

Предлагается добавить в язык механизм compile-time контроля времени жизни объектов.

Это позволит определять/ограничивать создание экземпляров объектов только внутри дерева владения, чьё время жизни явно контролируется компилятором, т.е. созданием и уничтожением объектов происходит автоматически, без явных действий программиста.

Допустимыми будут являться экземпляры объектов:

  • с automatic storage duration;
  • временный объект prvalue, уничтожаемый в конце текущего выражения.

Примеры, где ваша идея будет полезна.
Это будет полезно при реализации compile-time контроля типов, которые могут (должны быть) корректны только тогда, когда их время жизни строго ограничено текущим контекстом (областью видимости), например:

  • capability/token-объекты
  • объекты для обеспечения идемпотентности транзакций
  • любые RAII ресурсы, которые не должны переживать локальный контекст;
  • типы, для которых важно compile-time ограничить время жизни с предсказуемым удалением после завершения текущей области видимости, такие, как std::scoped_lock

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions