У меня есть этот прекрасный кусок кода, который использует шаблоны переменных C ++ 14s :
#include <typeinfo>
template<typename T, typename U>
constexpr bool same_type = false;
template<typename T>
constexpr bool same_type<T,T> = true;
int main() {
bool f = same_type<int, bool>; // compiles. Evals to false.
bool t = same_type<int, int>; // compiles. Evals to true.
int a;
int b;
return same_type<typeid(a), typeid(a)>; // does not compile.
}
Он проверяет, совпадают ли два типа. Мне это нравится, но мне кажется совершенно бесполезным, если мне приходится самому передавать типы, а не выводить их из некоторых переменных.
Есть ли способ заставить эту работу? Я бы ожидал, что что-то вроде typeid(x)
может сработать.