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);
}
出力
banana
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??