[SUGGESTION] Add inspect is() matchers for templates#108
Merged
hsutter merged 1 commit intohsutter:mainfrom Dec 25, 2022
Merged
Conversation
4dd4dab to
e1ea91b
Compare
ffffd80 to
235628a
Compare
235628a to
e1b1606
Compare
e1b1606 to
36e88c6
Compare
This was referenced Dec 17, 2022
Closed
36e88c6 to
b2a4714
Compare
b2a4714 to
83b93e0
Compare
Contributor
Author
|
rebased to main |
Owner
|
Thanks! I think this sets a record for the fastest non-trivial cppfront PR review yet... I tried the code in my own branch and it just worked on the first try with all three compilers. Groovy. Merging... |
Owner
|
BTW for other readers: One reason this could be reviewed so quickly is because the P2392 design paper for
... which just hadn't been implemented yet in cppfront, so this extension PR is on plan. Thanks @filipsajdak |
Contributor
Author
|
Thank you. I proposed it based on the paper - https://wg21.link/p2392 |
hsutter
added a commit
that referenced
this pull request
Dec 25, 2022
Azmah-Bad
pushed a commit
to Azmah-Bad/cppfront
that referenced
this pull request
Feb 24, 2023
…atchers-for-templates [SUGGESTION] Add inspect `is()` matchers for templates
Azmah-Bad
pushed a commit
to Azmah-Bad/cppfront
that referenced
this pull request
Feb 24, 2023
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Thanks to other experiments I have added the possibility to inspect if a type is a template. That will allow generic code to check if we deal with
std::vector,std::array,std::unique_ptr,std::variant, orstd::initializer_list(working prototype with more templates I have checked is here: https://godbolt.org/z/ddMdq5W4T).This change makes below code possible:
Limitations
The current solution is based on template template arguments. The current solution will work with templates that match:
template <typename...> class C;, ortemplate <typename,auto> class C- this is needed to handlestd::arrayUnfortunately, there is no way of having a universal match for type and non-type parameters in a variadic way. If needed more matches there would be a need to create more combinations of template template arguments.