【发布时间】:2015-04-18 19:32:27
【问题描述】:
考虑以下类:
template <class Endianness>
class bitcode
{};
Endianness 可能是:default_endianness、little_endian 或 big_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 的声明当然取决于首选选项。)
【问题讨论】:
-
C++ 标准不强制要求任何最佳/通用实践。就个人而言,我永远不会使用
enum endianness(因为它不必要地污染了命名空间)。另外,可能会有人在这里指出 STL 不等于标准库。 -
最简单的选择可能是评估(刚刚发布的)Boost.Endian 库,看看是否满足您的需求。如果您必须实现自己的,那可能会给您一些设计提示。
-
示例代码无法编译。请发布您实际尝试过的问题以及问题所在。如果您的目标只是民意调查,那就错了。
标签: class templates c++11 enums c++14