Я пытался сделать что-то похожее на это:
auto foo = int*(nullptr);
, который с VC ++ не компилируется с сообщением об ошибке:
Имя типа не разрешено
А с GCC 8.2 не компилируется с:
Ожидаемое первичное выражение до 'int'
Мне было действительно любопытно, почему этопредставляется неправильным синтаксисом.На мой взгляд, все должно быть в порядке, поскольку литералы могут быть инициализированы следующим образом.
auto foo = int(2);
Единственный способ придумать, как заставить это работать, - это создать псевдоним типа или сделать это:
auto foo = std::add_pointer_t<int>(nullptr);
Я пытался найти это, но, честно говоря, я даже не знаю, как правильно сформулировать этот вопрос, так как мой стандарт слаб.Любое понимание будет оценено!