[SUGGESTION] Add inspect is()
matchers for templates
#108
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::array
Unfortunately, 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.