在求职面试中,我被要求写一个元功能
确定一个类型是一个指针.这是
我提出了什么
确定一个类型是一个指针.这是
我提出了什么
template <typename T> struct is_pointer { static const bool value = false; } template <typename T> struct is_pointer<T *> { static const bool value = true; }
然后我被要求写一个Meta-assert,这将失败
在编译期间如果我的is_pointer函数不是
做正确的事情
当我使用static_assert时,他明确告诉我
我只能使用C98标准.我该如何实现?
解决方法
在你的情况下
template <bool> struct assert; template <> struct assert<true> {};
会解决这个问题:
assert<!is_pointer<char>::value>(); // valid assert<is_pointer<char *>::value>(); // valid assert<is_pointer<char>::value>(); // compilation error: // use of incomplete class