gpt4 book ai didi

c++ - 确定 C++ 类是否具有私有(private)析构函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:46 25 4
gpt4 key购买 nike

假设我有以下代码:

class Example
{
#ifndef PRIVATE_DESTRUCTOR
public:
#endif
~Example() { }
public:
friend class Friend;
};

class Friend
{
public:
void Member();
};

void Friend::Member()
{
std::printf("Example's destructor is %s.\n",
IsDestructorPrivate<Example>::value ? "private" : "public");
}

是否可以实现上面的 IsDestructorPrivate 模板来确定类的析构函数是 private 还是 protected

在我处理的情况下,我需要使用此 IsDestructorPrivate 的唯一时间是在可以访问此类私有(private)析构函数(如果存在)的地方。它不一定存在。允许 IsDestructorPrivate 是宏而不是模板(或者是解析为模板的宏)。 C++11 没问题。

最佳答案

您可以使用 std::is_destructible类型特征如下例所示:

#include <iostream>
#include <type_traits>

class Foo {
~Foo() {}
};

int main() {
std::cout << std::boolalpha << std::is_destructible<Foo>::value << std::endl;
}

LIVE DEMO

std::is_destructible<T>::value将等于 false如果 T 的析构函数是deletedprivatetrue否则。

关于c++ - 确定 C++ 类是否具有私有(private)析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25317300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com