Fixed issue with custom_struct global constructors #85
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.
There was a bug with BuildIt and unnamed custom structs with global variables.
Unnamed structs grab their names using the type_namer trait. This trait uses a static variable to keep track of types that already have a named assigned. However, we were using std::string to hold this name. It is possible that a global constructor could request a name but the static member hasn't been initialized yet. This reads an unconstructed std::string which invokes undefined behavior.
To fix this we make member to be a std::string* instead of std::string.
sample56 has been updated to test this.