最終更新日時(UTC):
が更新

履歴 編集

function template
<meta>

std::define_static_string(C++26)

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

処理系

関連項目

参照