gpt4 book ai didi

c++ - 如何在 C++11 中检测一个类是否是最终的?

转载 作者:IT老高 更新时间:2023-10-28 22:01:28 26 4
gpt4 key购买 nike

代码优先。

#include <iostream>

using namespace std;

struct A final {};
struct B {};

int main()
{
cout << is_final<A>::value << endl; // Output true
cout << is_final<B>::value << endl; // Output false

return 0;
}

is_final类如何实现?

最佳答案

作为 GCC __is_final intrinisic (for PR 51365) 的实现者,我很确定它不能在库中完成,它需要编译器支持。

您可以使用 C++11 的 SFINAE 表达式功能做一些非常聪明的事情,但是要检测一个类是否是最终类,您需要从它派生,并在模板参数推导上下文中实例化派生类型,但是从类派生是在声明而不是表达式中完成的。

此外,您应该考虑是否只想知道是否使用了 final 伪关键字,或者是否因为其他原因(例如只有私有(private)构造函数)而无法派生类。

关于c++ - 如何在 C++11 中检测一个类是否是最终的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809359/

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