C++ 在C++;11或更高版本有没有一种方法可以让constexpr在没有UB的情况下确定endian?

C++ 在C++;11或更高版本有没有一种方法可以让constexpr在没有UB的情况下确定endian?,c++,c++11,c++14,C++,C++11,C++14,请注意,我发现的早期类似问题是在C++11之前和/或包含UB和/或不能是constexpr 一点也不 或类似 还有小尾端,大尾端,还有其他。如果其他,我至少需要不编译,如果可以添加其他体系结构,那就更好了 已在前面询问,但未包括其他,这将导致其他体系结构定义不清 基本上,我希望能够根据目标体系结构的endianness专门化一个模板,作为我的工作的一部分,我希望提供您所要求的: 其他将通过以下方式检测: endian::native != endian::little && e

请注意,我发现的早期类似问题是在C++11之前和/或包含UB和/或不能是constexpr

一点也不 或类似

还有
小尾端
大尾端
,还有
其他
。如果
其他
,我至少需要不编译,如果可以添加
其他
体系结构,那就更好了

已在前面询问,但未包括
其他
,这将导致
其他
体系结构定义不清

基本上,我希望能够根据目标体系结构的endianness专门化一个
模板
,作为我的工作的一部分,我希望提供您所要求的:

其他
将通过以下方式检测:

endian::native != endian::little && endian::native != endian::big
此标题中的第一个
static\u assert
当前与
other
问题不正确,应删除


对于任何给定的平台,都很容易提供此标题。但是它当然是不可移植的,因此由您的std::lib实现者提供它是非常理想的。

我希望它能在所有体系结构上的所有兼容编译器上运行。顺便说一句,对于GNU来说,似乎也有
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu PDP\uuendian\uuuuuuuuuuuuuuuuuuuuuuuuuuuu。条形赌:命名一台机器,它的
\uuuu字节\uu顺序\uuuu==\uuuuu顺序\updp\uendian\uuuuuu
,并且存在一个编译器,该编译器定义
\uuuuu cplusplus>=201103\uu cplusplus>=201103
。第一件事。我希望这可能是某个人的答案。但是,由于缺乏活动,我怀疑我能否进入第二部分。至少现在可以在SOBy“other”上搜索到
\uuuuuu ORDER\updp\u ENDIAN\uuuuuuu
,你是说像中端或混合端或运行时可切换架构这样的异国情调吗?如下所述,
\uuuuuuu ORDER\updp\u ENDIAN\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。显然,一些PowerPC处理器甚至可以按页选择。@ MattNePoto: C++编译器通常以硬件/ OS组合为目标。你知道这种组合在哪里可以在C++应用程序运行时变化吗?@ HoaRhannand我只是去维基百科:我在野外还没有遇到过这样的系统。听起来它们似乎存在,也许是在嵌入式系统中。