Как использовать шаблоны переменных для сравнения типов переменных в C ++ 17? - PullRequest
1 голос
/ 22 декабря 2019

У меня есть этот прекрасный кусок кода, который использует шаблоны переменных 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) может сработать.

...