C++: Add tests for self-comparison template FP

This commit is contained in:
Jonas Jensen
2019-11-11 11:57:35 +01:00
parent 717490b670
commit 281d512178
2 changed files with 28 additions and 0 deletions

View File

@@ -1,3 +1,9 @@
| templates.cpp:20:5:20:25 | ... < ... | Self comparison. |
| templates.cpp:21:5:21:25 | ... < ... | Self comparison. |
| templates.cpp:21:5:21:25 | ... < ... | Self comparison. |
| templates.cpp:22:5:22:25 | ... < ... | Self comparison. |
| templates.cpp:22:5:22:25 | ... < ... | Self comparison. |
| templates.cpp:22:5:22:25 | ... < ... | Self comparison. |
| test.cpp:13:11:13:21 | ... == ... | Self comparison. |
| test.cpp:79:11:79:32 | ... == ... | Self comparison. |
| test.cpp:83:10:83:15 | ... == ... | Self comparison. |

View File

@@ -0,0 +1,22 @@
struct C1 {
static const int value = 5;
};
struct C2 {
static const int value = 6;
};
template<typename T1, typename T2>
bool compareValues() {
// Not all instantiations have T1 and T2 equal. Even if that's the case for
// all instantiations in the program, there could still be more such
// instantiations outside.
return
T1::value < T2::value || // GOOD [FALSE POSITIVE]
T1::value < T1::value || // BAD
C1::value < C1::value ; // BAD
}
bool callCompareValues() {
return compareValues<C1, C2> || compareValues<C1, C1>();
}