typeof is a gcc extension. typeid is part of C++, but you must include <type_info>. decltype doesn't need <type_info>. It can be used like this (maybe there's an easier way, but this works).
Code:
#include <iostream>
template<class T, class U> struct is_same {
static constexpr bool value = false;
};
template<class T> struct is_same<T, T> {
static constexpr bool value = true;
};
int main()
{
using std::cout;
double a;
int b;
if (is_same<decltype(a), int >::value) cout << "a is int\n";
if (is_same<decltype(a), double>::value) cout << "a is double\n";
if (is_same<decltype(b), int >::value) cout << "b is int\n";
if (is_same<decltype(b), double>::value) cout << "b is double\n";
}