Namespaces
Variants

std::meta::has_c_language_linkage

ja.cppreference.net より
 
 
 
リフレクションライブラリ
 
リフレクション型と問い合わせ
リフレクション問い合わせ
リフレクションレイアウト問い合わせ
型プロパティ
型プロパティ問い合わせ
 
ヘッダ <meta>
consteval bool has_c_language_linkage( std::meta::info r );
で定義 (C++26以上)

r が表すものが "C" 言語リンケージを持つ変数、関数、または関数型であるかどうかを判定します (extern "C")。そうである場合は true を返し、そうでない場合は false を返します。

引数

r - リフレクション値

戻り値

truer が表すものが "C" 言語リンケージを持つ場合は false 、そうでない場合は

。

ノートrr が変数、関数、または関数型を表していない場合(例えば false が関数テンプレートを表している場合)、結果は

になります。

#include <meta>

extern "C" void foo();
static_assert(std::meta::has_c_language_linkage(^^foo) == true);

void moo();
static_assert(std::meta::has_c_language_linkage(^^moo) == false);

template<typename T>
T boo();
static_assert(std::meta::has_c_language_linkage(^^boo) == false);

int main() {}

このコードを実行する

(C++26)反映されたエンティティが
リンケージを持っているか確認する (関数)