Added support for defer init for dyn_var #58
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Usually when dyn_var are instantiated, they are immediately initialized. This means they can be declared only inside builder contexts (or should use as_global or with_name).
This is restrictive when the user wants to create objects outside the context that have dyn_var members. Currently this requires the user to push the creation of the entire object inside the context. It creates issues with expensive computations being run multiple times. To get around this, we add a new constructor helper
builder::defer_init
and a member functiondeferred_init
.The constructor helper allows declaring dyn_var(s) without actually doing anything. The member function
deferred_init
, then does the job of the constructor and should be called inside the context.Added sample53 to demonstrate/test this.