https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121373
Bug ID: 121373
Summary: std::byte_swap is not available when using import std
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: printfne at gmail dot com
Target Milestone: ---
/// main.cpp It works properly when include<bit> is used
#include <bit>
int main() {
static_assert(std::byteswap((unsigned short)0x00ff) == (unsigned
short)0xff00 );
return 0;
}
/// main.cpp An error will be obtained when using import std
import std;
int main() {
static_assert(std::byteswap((unsigned short)0x00ff) == (unsigned
short)0xff00 );
return 0;
}
/// Compilation command
g++-latest -std=gnu++26 -c -fmodules -fsearch-include-path bits/std.cc
g++-latest -std=gnu++26 -fmodules main.cpp
/// error message
main.cpp: In function 'int main()':
main.cpp:5:24: error: 'byteswap' is not a member of 'std'
5 | static_assert(std::byteswap((unsigned short)0x00ff) == (unsigned
short)0xff00 );
|
///
I provided a patch for this issue and sent it to [email protected], cc to
[email protected]. But no response was received.
For some reasons, I couldn't find this patch in the short term. Displaying the
email content seems to be a feasible solution
/// title
[PATCH] libstdc++: Export std::byteswap from std.cc.in
/// content
After import std, std::byteswap cannot be used.
After my observation, this function is the only one in the <bit> header file
that has not been exported.
The purpose of this patch is to export std::byteswap so that it can be used
normally after import std.
Signed-off-by: hexne <[email protected]>
---
libstdc++-v3/src/c++23/std.cc.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/libstdc++-v3/src/c++23/std.cc.in
b/libstdc++-v3/src/c++23/std.cc.in
index 9301ed90c00..61f0b715b36 100644
--- a/libstdc++-v3/src/c++23/std.cc.in
+++ b/libstdc++-v3/src/c++23/std.cc.in
@@ -663,6 +663,7 @@ export namespace std
using std::bit_ceil;
using std::bit_floor;
using std::bit_width;
+ using std::byteswap;
using std::countl_one;
using std::countl_zero;
using std::countr_one;
--
This issue should be very easy for anyone to fix, but if possible, I really
hope to know how to write this patch email and see that I have successfully
submitted the patch to gcc. Thanks.