- meta[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp26[meta cpp]
namespace std {
template <ranges::input_range R>
consteval const ranges::range_value_t<R>* define_static_string(R&& r);
}コンパイル時に計算した文字列を静的ストレージに配置し、ヌル終端された文字列へのポインタを返す。
rの要素をコピーした静的ストレージ上のヌル終端文字列へのポインタを返す。
#include <meta>
#include <print>
#include <format>
// コンパイル時に構築した文字列を実行時に使用する
consteval const char* make_greeting(const char* name) {
std::string s = std::format("Hello, {}!", name);
return std::define_static_string(s);
}
int main() {
constexpr const char* greeting = make_greeting("world");
std::println("{}", greeting);
}- std::define_static_string[color ff0000]
banana
- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??