https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115497
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Ok, clang behavior is an odd one here:
```
template<typename _Tp, bool _IsPtr = __is_pointer(_Tp)>
struct __is_pointer {};
template<typename _Tp>
inline bool t = __is_pointer(_Tp);
template<bool>
struct ts{};
template<typename _Tp>
struct is_pointer : ts<__is_pointer(_Tp)> {};
int tt = t<int>;
```
clang does not complain about the use of __is_pointer for variable template t
but does for the base class of is_pointer.