C 确定模板变量是类还是内置类型
C++ determine if templated variable is a class or just a built in type?
问题:我正在尝试明确调用灾难,但是
int a;
class b;
b.~class(); // This works.
a.~int(); // This doesn't.
我的代码已模板,因此我需要一种方法来找出它们是否给我的基本类型。
示例:
if(!basetype<Class>())
{
classInst.~Class();
}
可能的解决方案:我可以部分模板基本类型,因此它没有称为Destructor,我只是在寻找一种更简单的方式。也许C 有一个内置操作员,我不知道大声笑。
ps:我爱你。
我的代码:
template<typename DestroyClass>
void HeapAllocator::destroy(HeapPointer<DestroyClass>& object)
{
//object->DestroyClass::~DestroyClass();
// Maintaining linked list references
HeapPointer<EMPTY>* prevIndex = (HeapPointer<EMPTY>*)object.prev;
HeapPointer<EMPTY>* nextIndex = (HeapPointer<EMPTY>*)object.next;
if(prevIndex != 0)
prevIndex->next = (U8*)nextIndex;
else
indexerStart = (U8*)nextIndex;
if(nextIndex != 0)
nextIndex->prev = (U8*)prevIndex;
else{
indexerEnd = (U8*)prevIndex;
if(prevIndex != 0)
allocatorTop = prevIndex->end;
else
allocatorTop = heapBottom;
}
// Nullifying object so it can be overwritten
object.start = 0;
object.end = 0;
object.alignment = 0;
object.prev = 0;
object.next = 0;
}
c 具有一个特殊的规则,即在模板中调用模板参数类型的破坏者,甚至适用于内置类型。该规则是使写作模板更容易。因此,虽然int x; x.~int()
不会编译,但T t; t.~T()
在模板中T = int
会编译并无能为力。
相关文章:
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- 何时包含内置类型和运算符的标头?
- 基本类型与内置类型有什么区别C++
- 指内置类型的文字
- 如何在编译器时动态获取元组内的变量类型C++?
- 使用 SFINAE 和 void_t 来确定容器内的元素类型
- 更改if范围内变量的类型
- 在C 中重新解析命名空间内的全局类型
- Q : std::同一数组内具有不同类型的函数
- 如何使用内置返回类型重载运算符?
- const_cast是否返回在角括号内指定的类型
- C和c++中内置数据类型的类型是什么?
- 内置数据类型转换为用户定义的数据类型c++
- 将内置数据类型转换为std::string: memcpy vs snprintf
- 函数模板内的解除类型和范围解析操作符
- 内置数据类型与C++中用户定义的数据类型
- 如何用内部类的类型初始化模板类中的静态字段
- int(内置数据类型)是c++中的一个类吗
- 是否有可能像处理内置数据类型那样处理class_inst = some_func(class_inst) ?
- 内联stl类型列表管理器