catchorg / catchorg/Catch2

Using types with default template arguments TEMPLATE_PRODUCT_TEST_CASE_SIG fails compiling on clang

Open
#2,342 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
21.5k
Forks
3.5k
Avg merge
3d 16h
Merged PRs (30d)
2

Description

**Describe the bug**
I've compiled a minimal example. https://godbolt.org/z/MGnzaxEf7
There you can see, that the default argument of ``bad_testable`` let clang (and on my local machine clangCl too) fail to compile the code. When you remove ``bad_testable`` from the test case, it compiles fine.

**Expected behavior**
Well, it should compile and behave as on gcc and msvc.

**Reproduction steps**
```cpp
#include

#define CATCH_CONFIG_MAIN
#include
//#include

template
struct good_testable : std::bool_constant
{
};

template
struct bad_testable : std::bool_constant
{
};

TEMPLATE_PRODUCT_TEST_CASE_SIG
(
"test",
"[test]",
((bool V), V),
(good_testable, bad_testable),
(
(true),
(false)
)
)
{
REQUIRE(TestType::value);
}
```

**Platform information:**

- OS: Windows and on what ever machine compiler-explorer runs
- Compiler+version: clang and clangCl (all tested versions)
- Catch version: catch2 (up2date)

**Additional context**
Nothing to add.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.