class - 模板参数 : enum, 类或枚举类

标签 class templates c++11 enums c++14

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

6年前关闭。




Improve this question




考虑以下类:

template <class Endianness>
class bitcode
{};

Endianness那可能是:default_endianness , little_endianbig_endian .

问题如下:根据 C++14 和以下 C++17,最佳和通用实践是/将是什么? (通常我指的是标准库或 boost 使用(或将使用)的那些。(+ 为什么?)
// The enum option
enum enum_endianness {default_endianness, little_endian, big_endian};

// The enum class option
enum class enum_class_endianness {default_endianness, little_endian, big_endian};

// The class option
class class_default_endianness{}; 
class class_little_endian{}; 
class class_big_endian{}; 

(注意:当然 bitcode 的声明将取决于首选选项。)

最佳答案

您必须选择适合您的目的:

  • enum : 主要是为了向后兼容。
  • enum class :只有在您事先知道所有标签时才能使用。
  • class :任何人都可以引入新标签,您可以使标签包含数据。
  • 关于class - 模板参数 : enum, 类或枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29721865/

    相关文章:

    java - 我可以在 Java 中重载接口(interface)吗?

    html - Arcana 模板中的隐形复选框

    c++ - 为什么在这种情况下非类型模板参数不能是自动的?

    c++ - 编译错误 C2662

    c++ - 以不同方式分派(dispatch)右值和左值并使用 sfinae 禁用一个选项

    c++ - `std::array<T, 0>` 默认可构造,而 `T` 不可默认构造?

    android - 抽屉导航 : text is hidden below actionbar?

    c++ - 没有名字的类(class)

    c++ - 如何将两个类成员函数与同一个类中的另一个函数一起添加?

    c++ - 比较 C++ 模板中的字符串文字