Я прилагаю подписку на ошибку компоновщика
неразрешенный внешний символ "class std :: basic_ostream> std :: cout"
(? СоиЬ @ станд @@ 3V? $ Basic_ostream @ DU? $ Char_traits @ D @ станд @@@ 1 @ A) "
при попытке назначить std :: cout статическому constexpr std :: stream при использовании visual stidio 2017 и visual studio 2019. Однако при использовании gcc никаких проблем не возникает.
Следующий простой код тестирования может указать на эту проблему
#include <iostream>
int main()
{
static constexpr std::ostream* fp = &std::cout;
*fp << "Hello World!\n";
}
Оба выражения
constexpr std::ostream* fp = &std::cout;
или
static std::ostream* fp = &std::cout;
подтверждено, чтобы быть в порядке.
Мой вопрос:
Is
static constexpr std::ostream* fp = &std::cout;
законное выражение. Если нет, то почему?
Большое спасибо.