Skip to content

Commit 5b8e077

Browse files
committed
Merge bitcoin/bitcoin#27892: refactor: Avoid copy of bilingual_str when formatting, Fix ADL violation
fa8ef7d refactor: Avoid copy of bilingual_str when formatting, Fix ADL violation (MarcoFalke) Pull request description: This refactor shouldn't change behavior, but may fix compile errors such as bitcoin/bitcoin#27862 (comment) ACKs for top commit: achow101: ACK fa8ef7d ryanofsky: Code review ACK fa8ef7d. Looks great! Thanks for updating hebasto: ACK fa8ef7d, I have reviewed the code and it looks OK. Tree-SHA512: 903019962f27b5432b8e3af052b472238ef68d3ee165148c9d2232bf290309075f9f17d8d06c9b5c7fddb89c1a9c3a4c09c6310af01e8561adc0244a30db0857
2 parents c454395 + fa8ef7d commit 5b8e077

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

src/util/translation.h

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,18 @@ inline bilingual_str Untranslated(std::string original) { return {original, orig
4949

5050
// Provide an overload of tinyformat::format which can take bilingual_str arguments.
5151
namespace tinyformat {
52-
inline std::string TranslateArg(const bilingual_str& arg, bool translated)
53-
{
54-
return translated ? arg.translated : arg.original;
55-
}
56-
57-
template <typename T>
58-
inline T const& TranslateArg(const T& arg, bool translated)
59-
{
60-
return arg;
61-
}
62-
6352
template <typename... Args>
6453
bilingual_str format(const bilingual_str& fmt, const Args&... args)
6554
{
66-
return bilingual_str{format(fmt.original, TranslateArg(args, false)...),
67-
format(fmt.translated, TranslateArg(args, true)...)};
55+
const auto translate_arg{[](const auto& arg, bool translated) -> const auto& {
56+
if constexpr (std::is_same_v<decltype(arg), const bilingual_str&>) {
57+
return translated ? arg.translated : arg.original;
58+
} else {
59+
return arg;
60+
}
61+
}};
62+
return bilingual_str{tfm::format(fmt.original, translate_arg(args, false)...),
63+
tfm::format(fmt.translated, translate_arg(args, true)...)};
6864
}
6965
} // namespace tinyformat
7066

0 commit comments

Comments
 (0)