• <tfoot id='CbbFC'></tfoot>
  • <legend id='CbbFC'><style id='CbbFC'><dir id='CbbFC'><q id='CbbFC'></q></dir></style></legend>
  • <i id='CbbFC'><tr id='CbbFC'><dt id='CbbFC'><q id='CbbFC'><span id='CbbFC'><b id='CbbFC'><form id='CbbFC'><ins id='CbbFC'></ins><ul id='CbbFC'></ul><sub id='CbbFC'></sub></form><legend id='CbbFC'></legend><bdo id='CbbFC'><pre id='CbbFC'><center id='CbbFC'></center></pre></bdo></b><th id='CbbFC'></th></span></q></dt></tr></i><div id='CbbFC'><tfoot id='CbbFC'></tfoot><dl id='CbbFC'><fieldset id='CbbFC'></fieldset></dl></div>
          <bdo id='CbbFC'></bdo><ul id='CbbFC'></ul>

        <small id='CbbFC'></small><noframes id='CbbFC'>

      1. 有没有一种简单的方法可以判断一个类/结构是否没有数据成员?

        时间:2023-07-01
          <tbody id='qJODk'></tbody>

            1. <i id='qJODk'><tr id='qJODk'><dt id='qJODk'><q id='qJODk'><span id='qJODk'><b id='qJODk'><form id='qJODk'><ins id='qJODk'></ins><ul id='qJODk'></ul><sub id='qJODk'></sub></form><legend id='qJODk'></legend><bdo id='qJODk'><pre id='qJODk'><center id='qJODk'></center></pre></bdo></b><th id='qJODk'></th></span></q></dt></tr></i><div id='qJODk'><tfoot id='qJODk'></tfoot><dl id='qJODk'><fieldset id='qJODk'></fieldset></dl></div>

              <small id='qJODk'></small><noframes id='qJODk'>

                <bdo id='qJODk'></bdo><ul id='qJODk'></ul>
                <legend id='qJODk'><style id='qJODk'><dir id='qJODk'><q id='qJODk'></q></dir></style></legend>
                  <tfoot id='qJODk'></tfoot>
                  本文介绍了有没有一种简单的方法可以判断一个类/结构是否没有数据成员?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  你好,

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

                  is there some easy way in C++ to tell (in compile-time) if a class/struct has no data members?

                  例如struct T{};

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

                  My first thought was to compare sizeof(T)==0, but this always seems to be at least 1.

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

                  The obvious answer would be to just look at the code, but I would like to switch on this.

                  推荐答案

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

                  Since C++11, you can use standard std::is_empty trait: https://en.cppreference.com/w/cpp/types/is_empty

                  如果您正在使用旧式编译器,有一个技巧:您可以从另一个空的类中派生并检查是否 sizeof(OtherClass) == 1.Boost 在它的 is_empty 类型特征中做到了这一点.

                  If you are on paleo-compiler diet, there is a trick: you can derive from this class in another empty and check whether sizeof(OtherClass) == 1. Boost does this in its is_empty type trait.

                  未经测试:

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

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

                  However, this relies on the empty base class optimization (but all modern compilers do this).

                  这篇关于有没有一种简单的方法可以判断一个类/结构是否没有数据成员?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在 C++ 中将结构体初始化为 0 下一篇:不能在全局范围内使用结构

                  相关文章

                    <legend id='u2ANK'><style id='u2ANK'><dir id='u2ANK'><q id='u2ANK'></q></dir></style></legend>

                      <bdo id='u2ANK'></bdo><ul id='u2ANK'></ul>

                    <i id='u2ANK'><tr id='u2ANK'><dt id='u2ANK'><q id='u2ANK'><span id='u2ANK'><b id='u2ANK'><form id='u2ANK'><ins id='u2ANK'></ins><ul id='u2ANK'></ul><sub id='u2ANK'></sub></form><legend id='u2ANK'></legend><bdo id='u2ANK'><pre id='u2ANK'><center id='u2ANK'></center></pre></bdo></b><th id='u2ANK'></th></span></q></dt></tr></i><div id='u2ANK'><tfoot id='u2ANK'></tfoot><dl id='u2ANK'><fieldset id='u2ANK'></fieldset></dl></div>
                      <tfoot id='u2ANK'></tfoot>
                    1. <small id='u2ANK'></small><noframes id='u2ANK'>