Потоки iostream и char*

Приведенный код компилирует gcc, но не компилирует Visual C++.

Кто из них неправ в строгом соответствии стандарту? Предполагаю, что это расширение gcc, но в стандарте доказательства не нашел (не нашел >>(char*) - это доказательство?).

#include <iostream>

int main() {
    char* c = new char[200];
    char s[200];
    std::cin >> s;
    std::cin >> c;  // Visual C++ сообщает об ошибке C2679
    std::cout << s;
    std::cout << c;
    }

Ответы (1 шт):

Автор решения: HolyBlackCat

Код перестал быть корректным начиная с C++20.

Если посмотреть вот сюда, видно что в C++20 убрали >> с параметром char *, и заменили его на >> с параметром char (&)[N].

Первый имел тот же недостаток что и gets, поэтому неудивительно что его выпилили вслед за gets.

→ Ссылка