для MSVC) может использоваться для отключения языковых расширений с ограниченным успехом.

от вопрос уже есть ответ здесь:

Ошибка компиляции при использовании члена пользовательского литерала 1 ответ

Начиная с C ++ 11 стало возможным создаватьПользовательские литералы, Как и ожидалось, из таких литералов можно вернуть сложные структуры. Однако при попытке использовать такие операторы как123_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 и Clang отвергают этоговоря, что они не могут найтиoperator""_foo.bar, MSVC принимает это. Если я вместо этого напишу123_foo .bar(), все три компилятора принимают это

Кто здесь? Является123_foo.bar() когда-либо действительный?

Некоторая дополнительная информация:

Все трое принимают это застроковые литералыПроблема существует дляstd::chrono литералы также

Я склонен полагать, что это ошибка GCC и Clang, так как. не является частью действительного идентификатора.

Ответы на вопрос(1)

Ваш ответ на вопрос