如何在失败的代码中传递此 function test ($response) {
require_once 'TestThread.php';
$rev = new TestThread($response);
$rev->start();
}
?我在static_assert
周围尝试了const
的所有排列,但我无法获得T
。编译器始终将其解释为const int *
。
int * const
答案 0 :(得分:6)
您可以使用std::conditional
正确处理指针类型。
using CT = typename std::conditional<
std::is_pointer<T>::value,
typename std::remove_pointer<T>::type const *,
T const
>::type;
static_assert(std::is_same<CT,const int *>::value, "CT is not const int*");
答案 1 :(得分:2)
为了完整起见,你可以写一个专门用于指针的类型特征:
template <class T> struct const_qualify { using type = T const; };
template <class T> struct const_qualify<T*> { using type = T const*; };
template <class T> struct const_qualify<T&> { using type = T const&; };
然后:
using CT = typename const_qualify<T>::type;
在这种情况下,引用特化并不是很有用,因为你不能在引用中粘贴引用,但是为了完整性。