{fmt} представляет format_as как простой способ добавления пользовательских средства форматирования для ваших собственных перечислений/классов, а также вводит форматирование std::optional.
Однако комбинация этих двух не может скомпилироваться с использованием clang, но компилируется нормально с использованием gcc или msvc.
Пример можно найти здесь: godbolt. Измените компилятор на gcc, и код компилируется нормально.
Код: Выделить всё
#include
#include
#include
namespace nn
{
enum class Bar
{
First,
Second,
Third,
Fifth = 5,
};
std::string_view format_as(Bar bar)
{
switch (bar) {
case Bar::First:
return "One";
case Bar::Second:
return "Two";
case Bar::Third:
return "Three";
case Bar::Fifth:
return "Five";
}
return "";
}
}
int main() {
auto b = nn::Bar::First;
std::optional ob = b;
fmt::print("{} {}\n", b, ob);
return 0;
}
Есть ли у кого-нибудь еще наткнулся на эту проблему? Это ошибка в fmt, или проблема с компилятором clang, или я просто делаю что-то не так?
Подробнее здесь: https://stackoverflow.com/questions/774 ... tion-issue