我有我写了一个函数来检查,如果给定的变量是指针类型:的std :: is_pointer检查与普遍引用
template<typename T>
void CheckIfPointer(T&& value)
{
static_assert(std::is_pointer<typename std::remove_reference<T>::type>::value, "T must be of pointer type");
}
我使用的是通用的参考这里是因为我不想让限制,可以在被传送的值的类别但是我注意到,在这个例子中:
char const* mystr = "Hello World";
CheckIfPointer(mystr);
类型T
实际上是const char *&
(根据铛)。那么remove_reference
在这里是合适的解决方案吗?或者是否有一种更简洁的方式来检查实际的类型,而没有引用妨碍?
请注意,我只支持C++ 14。
如果你想完美转发,你必须处理的引用。此外,你应该使你的函数constexpr, –
有趣的是,void.pointer想检查指针类型:-) – Jarod42