Daniel Duffy
C++ author, trainer
- Joined
- 10/4/07
- Messages
- 10,558
- Points
- 648
Some random metaprogramming in C++17 and beyond.
void TestTypes()
{ // Using C++17's `std::is_same_v<T, U>` format
// djd
// Compare types and sent the results to the console.
std::cout << std::boolalpha;
std::cout << std::is_same_v<void(int), void(const int)> << ' '; // T
std::cout << std::is_same_v<void(int*), void(const int*)> << ' '; // F
std::cout << std::is_same_v<void(int*), void(int* const)> << ' '; // T
std::cout << '\n' << std::is_same_v<int, const int> << ' '; // F
std::cout << std::is_same_v<int*, const int*> << ' '; // F
std::cout << std::is_same_v<int*, int* const> << ' '; // F
std::cout << '\n' << std::is_same<int, const int>::value << ' '; // F
std::cout << std::is_same<int*, const int*>::value << ' '; // F
std::cout << std::is_same<int*, int* const>::value << ' '; // F
}
void TestTypes()
{ // Using C++17's `std::is_same_v<T, U>` format
// djd
// Compare types and sent the results to the console.
std::cout << std::boolalpha;
std::cout << std::is_same_v<void(int), void(const int)> << ' '; // T
std::cout << std::is_same_v<void(int*), void(const int*)> << ' '; // F
std::cout << std::is_same_v<void(int*), void(int* const)> << ' '; // T
std::cout << '\n' << std::is_same_v<int, const int> << ' '; // F
std::cout << std::is_same_v<int*, const int*> << ' '; // F
std::cout << std::is_same_v<int*, int* const> << ' '; // F
std::cout << '\n' << std::is_same<int, const int>::value << ' '; // F
std::cout << std::is_same<int*, const int*>::value << ' '; // F
std::cout << std::is_same<int*, int* const>::value << ' '; // F
}