看着
documentation
,我不明白为什么
std::make_format_args()
接受引用而不是const引用?
我的目标是实现以下内容:
#include <format>
template <class... Args>
inline static std::string format(const std::string_view field, Args&&... args)
{
return std::vformat(field, std::make_format_args(std::forward<Args>(args)...));
}
并且能够通过
const std::string&
作为输入
args
,但看起来
std::make_format_args()
需要一个非const引用。
我收到一个错误:
A non-const reference may only be bound to an lvalue C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.40.33807\include\format(3713): note: see declaration of 'std::make_format_args'
note: while trying to match the argument list '(_Ty, const std::string, _Ty, _Ty)'
更新
我可以在这里重现错误:
https://godbolt.org/z/nj763o48r
(在本地,我得到了与上述完全相同的错误)