Os literais numéricos definidos pelo usuário podem ser imediatamente seguidos por um ponto? [duplicado]

Esta pergunta já tem uma resposta aqui:

Erro de compilação ao usar um membro de um literal definido pelo usuário 1 resposta

Desde o C ++ 11, foi possível criarLiterais definidos pelo usuário. Como esperado, é possível retornar estruturas complexas de tais literais. No entanto, ao tentar usar operadores como123_foo.bar():

struct foo {
    int n;
    int bar() const { return n; }
};

constexpr foo operator ""_foo(unsigned long long test)
{
    return foo{ static_cast<int>(test) };
}

int main() {
    return 123_foo.bar();
}

GCC e Clang rejeitam, dizendo que não conseguem encontrar umoperator""_foo.bar. MSVC aceita. Se eu escrever123_foo .bar(), todos os três compiladores aceitam

Quem está bem aqui? É123_foo.bar() já é válido?

Algumas informações extras:

Todos os três aceitamliterais de stringO problema existe parastd::chrono literais também

Estou inclinado a acreditar que este é um bug do GCC e Clang, como. não faz parte de um identificador válido.

questionAnswers(1)

yourAnswerToTheQuestion