C++ Logo


Advanced search

[std-proposals] import std and streams macros

From: SM <hubble.stein_at_[hidden]>
Date: Mon, 19 Feb 2024 02:38:15 +0900
Hello everyone,

I encountered this issue and suggest the following ideas.

Please, read this email with a grain of salt because I am not a
professional C++ programmer.

In addition, English is my second language, so I apologize for any errors.

In C++23, import std was introduced to facilitate the use of standard

However, it does not expose macros, so a user have to include the
corresponding header files again, for example:

#include <cstdio> // for stderr

// alternatively
// import <cstdio>;

import std;

int main()
  std::println(stderr, "error message");

One approach to address this issue could be to offer another api,

std::print uses stdout by default so it would be reasonable for std::eprint
to use stderr.

cf) std::println(std::cerr, "error message") is also available.

To resolve other C streams macros, I propose global variables, std::in,
std::out, and std::err as substitutes for stdin, stdout, and stderr,

I am afraid that there would be any naming conflicts and potential
problems, or these variables are reserved for future usage.

The following papers try to solve the similar macro issues:

1. Macros And Standard Library Modules - import should suffice

2. assert Should Be A Keyword In C++26 - Supporting standard C++23 macros
in module std

3. offsetof Should Be A Keyword In C++26 - Supporting standard C++23 macros
in module std

I appreciate your time and attention in reviewing this email.

Best regards,


Received on 2024-02-18 17:38:52