Allow using only types in TEMPLATE_TEST_CASE_SIG. (#2995)

Right now `TEMPLATE_TEST_CASE_SIG` fails to compile when the signature contains only types:

```
TEMPLATE_TEST_CASE_SIG(
  "TemplateTestSig: compiles with two type parameters",
  "[template][onlytypes]",
  ((typename U, typename V), U, V), (int,int)) {}
```

The trick is to resolve the ambiguity between the two overloads of
`get_wrapper` (`TypeList` and `Nttp`) by making one match more strongly.
We also need to allow `reg_test` to register more than one type.

Add unit tests.

Fixes #2680

---------

Co-authored-by: Martin Hořeňovský <martin.horenovsky@gmail.com>
This commit is contained in:
Clement Courbet
2025-07-08 14:26:25 +02:00
committed by GitHub
parent 8dc9f1a124
commit 2de12cb05f
20 changed files with 182 additions and 32 deletions

View File

@@ -12526,6 +12526,42 @@ Misc.tests.cpp:<line number>: PASSED:
with expansion:
5 >= 5
-------------------------------------------------------------------------------
TemplateTestSig: compiles with a single int parameter - 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................
No assertions in test case 'TemplateTestSig: compiles with a single int parameter - 1'
-------------------------------------------------------------------------------
TemplateTestSig: compiles with a single int parameter - 3
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................
No assertions in test case 'TemplateTestSig: compiles with a single int parameter - 3'
-------------------------------------------------------------------------------
TemplateTestSig: compiles with a single int parameter - 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................
No assertions in test case 'TemplateTestSig: compiles with a single int parameter - 6'
-------------------------------------------------------------------------------
TemplateTestSig: compiles with two type parameters - int,int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................
No assertions in test case 'TemplateTestSig: compiles with two type parameters - int,int'
-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
@@ -19012,6 +19048,6 @@ Misc.tests.cpp:<line number>
Misc.tests.cpp:<line number>: PASSED:
===============================================================================
test cases: 419 | 313 passed | 86 failed | 6 skipped | 14 failed as expected
assertions: 2269 | 2087 passed | 147 failed | 35 failed as expected
test cases: 423 | 313 passed | 90 failed | 6 skipped | 14 failed as expected
assertions: 2273 | 2087 passed | 151 failed | 35 failed as expected