Estou tentando passar uma string de formato que será usada em uma chamada para std::format
e não consigo encontrar uma maneira. Isso é possível ou preciso criar um método para cada formato esperado?
Estou usando o clang 19.1.4 no FreeBSD 14.2 e configurando-std=c++20
Um exemplo simplificado:
#include <format>
#include <iostream>
using namespace std;
class mytest
{
int m_one = 1;
int m_two = 2;
public:
string toString(const string& fmt) const
{
// this works
// return format("{}-{}", m_one, m_two);
// this fails
return format(fmt, m_one, m_two);
}
};
const string MY_FMT = "get {} and add {}";
int main(int argc, char **argv)
{
mytest mt;
string res = mt.toString(MY_FMT);
cout << res << endl;
return 0;
}
Recebo o seguinte erro
sample.cpp:17:23: error: call to consteval function 'std::basic_format_string<char, const int &, const int &>::basic_format_string<std::string>' is not a constant expression
17 | return format(fmt, m_one, m_two);
| ^
sample.cpp:17:23: note: function parameter 'fmt' with unknown value cannot be used in a constant expression