- meta[meta header]
- std::meta[meta namespace]
- function[meta id-type]
- cpp26[meta cpp]
namespace std::meta {
template <reflection_range R = std::initializer_list<info>>
consteval info substitute(info templ, R&& arguments);
}- info[link info.md]
- reflection_range[link reflection_range.md]
テンプレートにテンプレート引数を適用する。
テンプレートtemplにargumentsを置換した結果の特殊化のリフレクションを返す。
can_substitute(templ, arguments)がfalseの場合、std::meta::exception例外を送出する。
#include <meta>
#include <vector>
int main() {
constexpr auto vec_int = std::meta::substitute(^^std::vector, {^^int});
static_assert(vec_int == ^^std::vector<int>);
}- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??