gpt4 book ai didi

c++ - 有没有一种简单的方法来判断一个类/结构是否没有数据成员?

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

你好,

在 C++ 中是否有一些简单的方法来判断(在编译时)类/结构是否没有数据成员?

例如struct T{};

我的第一个想法是比较 sizeof(T)==0,但这似乎总是至少为 1。

显而易见的答案是只看代码,但我想打开它。

最佳答案

从 C++11 开始,您可以使用标准 std::is_empty 特征:https://en.cppreference.com/w/cpp/types/is_empty

如果你在使用古编译器,有一个窍门:你可以从另一个空的这个类派生并检查是否 sizeof(OtherClass) == 1。 Boost 在它的 is_empty 类型特征中做到了这一点。

未经测试:

template <typename T>
struct is_empty {
struct helper_ : T { int x; };
static bool const VALUE = sizeof(helper_) == sizeof(int);
};

但是,这依赖于空基类优化(但所有现代编译器都这样做)。

关于c++ - 有没有一种简单的方法来判断一个类/结构是否没有数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4828992/

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