我有以下代码:
#include <fmt/core.h>
template <typename ...T>
void func( const fmt::format_string<T...>& str, T&& ...args )
{
auto _ = fmt::format( str, args... );
}
int main()
{
func( "foo {}", 3 );
}
(此处查看实例)
如果我使用 ,它就会按我期望的方式编译并运行--std=c++17
;但是,如果我使用 ,它就不会--std=c++20
编译。具体来说,我得到这个错误:
consteval fmt::v10::basic_format_string<Char, Args>::basic_format_string(const S&) ... (带有 S= 和一堆 aka) ... 在常量表达式中
C++20 中的哪些差异导致此问题?如何修复此代码以符合 C++20?
我正在使用fmt v10.0.0
。