mirror of
https://github.com/fmtlib/fmt.git
synced 2025-12-23 20:14:57 +08:00
Some documentation improvements (#4631)
This commit is contained in:
parent
7bce22571a
commit
2e819a11f2
@ -321,8 +321,6 @@ parameterized version.
|
|||||||
|
|
||||||
::: arg(const Char*, const T&)
|
::: arg(const Char*, const T&)
|
||||||
|
|
||||||
Named arguments are not supported in compile-time checks at the moment.
|
|
||||||
|
|
||||||
### Compatibility
|
### Compatibility
|
||||||
|
|
||||||
::: basic_string_view
|
::: basic_string_view
|
||||||
|
|||||||
@ -2310,7 +2310,7 @@ template <typename Context> class value {
|
|||||||
template <typename T, FMT_ENABLE_IF(!has_formatter<T, char_type>())>
|
template <typename T, FMT_ENABLE_IF(!has_formatter<T, char_type>())>
|
||||||
FMT_CONSTEXPR value(const T&, custom_tag) {
|
FMT_CONSTEXPR value(const T&, custom_tag) {
|
||||||
// Cannot format an argument; to make type T formattable provide a
|
// Cannot format an argument; to make type T formattable provide a
|
||||||
// formatter<T> specialization: https://fmt.dev/latest/api.html#udt.
|
// formatter<T> specialization: https://fmt.dev/latest/api#udt.
|
||||||
type_is_unformattable_for<T, char_type> _;
|
type_is_unformattable_for<T, char_type> _;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2847,6 +2847,10 @@ using vargs =
|
|||||||
* **Example**:
|
* **Example**:
|
||||||
*
|
*
|
||||||
* fmt::print("The answer is {answer}.", fmt::arg("answer", 42));
|
* fmt::print("The answer is {answer}.", fmt::arg("answer", 42));
|
||||||
|
*
|
||||||
|
* Named arguments passed with `fmt::arg` are not supported
|
||||||
|
* in compile-time checks, but `"answer"_a=42` are compile-time checked in
|
||||||
|
* sufficiently new compilers. See `operator""_a()`.
|
||||||
*/
|
*/
|
||||||
template <typename Char, typename T>
|
template <typename Char, typename T>
|
||||||
inline auto arg(const Char* name, const T& arg) -> detail::named_arg<Char, T> {
|
inline auto arg(const Char* name, const T& arg) -> detail::named_arg<Char, T> {
|
||||||
|
|||||||
@ -4147,6 +4147,14 @@ template <typename T, typename Char = char> struct nested_formatter {
|
|||||||
|
|
||||||
inline namespace literals {
|
inline namespace literals {
|
||||||
#if FMT_USE_NONTYPE_TEMPLATE_ARGS
|
#if FMT_USE_NONTYPE_TEMPLATE_ARGS
|
||||||
|
/**
|
||||||
|
* User-defined literal equivalent of `fmt::arg`, but with compile-time checks.
|
||||||
|
*
|
||||||
|
* **Example**:
|
||||||
|
*
|
||||||
|
* using namespace fmt::literals;
|
||||||
|
* fmt::print("The answer is {answer}.", "answer"_a=42);
|
||||||
|
*/
|
||||||
template <detail::fixed_string S> constexpr auto operator""_a() {
|
template <detail::fixed_string S> constexpr auto operator""_a() {
|
||||||
using char_t = remove_cvref_t<decltype(*S.data)>;
|
using char_t = remove_cvref_t<decltype(*S.data)>;
|
||||||
return detail::udl_arg<char_t, sizeof(S.data) / sizeof(char_t), S>();
|
return detail::udl_arg<char_t, sizeof(S.data) / sizeof(char_t), S>();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user