Use MakeArg constructor instead of manually constructing Arg
This commit is contained in:
parent
6ea14f0dd2
commit
983b883380
14
format.h
14
format.h
@ -1218,14 +1218,9 @@ template <typename Char>
|
|||||||
struct NamedArg : Arg {
|
struct NamedArg : Arg {
|
||||||
BasicStringRef<Char> name;
|
BasicStringRef<Char> name;
|
||||||
|
|
||||||
typedef internal::MakeValue< BasicFormatter<Char> > MakeValue;
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
NamedArg(BasicStringRef<Char> argname, const T &x)
|
NamedArg(BasicStringRef<Char> argname, const T &x)
|
||||||
: name(argname) {
|
: Arg(internal::MakeArg< BasicFormatter<Char> >(x)), name(argname) {}
|
||||||
value = MakeValue(x);
|
|
||||||
type = static_cast<Arg::Type>(MakeValue::type(x));
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define FMT_DISPATCH(call) static_cast<Impl*>(this)->call
|
#define FMT_DISPATCH(call) static_cast<Impl*>(this)->call
|
||||||
@ -2900,11 +2895,8 @@ void format(BasicFormatter<Char> &f, const Char *&format_str, const T &value) {
|
|||||||
output << value;
|
output << value;
|
||||||
|
|
||||||
BasicStringRef<Char> str(&buffer[0], format_buf.size());
|
BasicStringRef<Char> str(&buffer[0], format_buf.size());
|
||||||
typedef internal::MakeValue< BasicFormatter<Char> > MakeValue;
|
typedef internal::MakeArg< BasicFormatter<Char> > MakeArg;
|
||||||
internal::Arg arg;
|
format_str = f.format(format_str, MakeArg(str));
|
||||||
arg.value = MakeValue(str);
|
|
||||||
arg.type = static_cast<internal::Arg::Type>(MakeValue::type(str));
|
|
||||||
format_str = f.format(format_str, arg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reports a system error without throwing an exception.
|
// Reports a system error without throwing an exception.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user