- format[meta header]
- function template[meta id-type]
- std[meta namespace]
- cpp20[meta cpp]
namespace std {
template<class Visitor, class Context>
see_below visit_format_arg(Visitor&& vis, basic_format_arg<Context> arg); // (1)
}
- see_below[italic]
- basic_format_arg[link /reference/format/basic_format_arg.md]
- (1) :
basic_format_arg
オブジェクトが現在保持している型に対応する関数を呼び出し、呼び出された関数の戻り値型で戻り値を返す
次と等しい。
return visit(forward<Visitor>(vis), arg.value);
- visit[link /reference/variant/visit.md]
- forward[link /reference/utility/forward.md]
ただし、便宜上、basic_format_arg
は次のprivateメンバを持つとする。
(これらのprivateメンバは規格に含まれない)
namespace std {
template<class Context>
class basic_format_arg {
public:
class handle;
private:
using charT = typename Context::char_type;
variant<monostate, bool, charT,
int, unsigned int, long long int, unsigned long long int,
float, double, long double,
const charT*, basic_string_view<charT>,
const void*, handle> value;
template<class Visitor, class Ctx>
friend auto visit_format_arg(Visitor&& vis, basic_format_arg<Ctx> arg);
};
}
- variant[link /reference/variant/variant.md]
- monostate[link /reference/variant/monostate.md]
- handle[link /reference/format/basic_format_arg/handle.md]
- basic_string[link /reference/string/basic_string.md]
- basic_string_view[link /reference/string_view/basic_string_view.md]
- basic_format_arg[link /reference/format/basic_format_arg.md]
- (1) :
basic_format_arg
オブジェクトが現在保持している型に対応する関数を呼び出した戻り値
namespace std {
template<class Visitor, class Context>
auto visit_format_arg(Visitor&& vis, basic_format_arg<Context> arg)
{
return visit(forward<Visitor>(vis), arg.value);
}
}
- basic_format_arg[link /reference/format/basic_format_arg.md]
- visit[link /reference/variant/visit.md]
- forward[link /reference/utility/forward.md]
basic_format_arg
オブジェクトが現在保持している型がユーザー定義型の場合、ビジターに渡されるのはhandle
型のオブジェクトになるので、元々どのような型だったかを知ることはできない。
- C++20
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??