STD на основе типа :: get for std :: pare может быть составлен с MSVC, но не может быть составлен в GCCC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 STD на основе типа :: get for std :: pare может быть составлен с MSVC, но не может быть составлен в GCC

Сообщение Anonymous »

Рассмотрим следующий пример < /p>
#include

int main() {
int i = 0;
int& r = i;
std::pair p{r, i};

int& ret = std::get(std::move(p));
}
< /code>
MSVC Скомпилируется приведенным выше примером, в то время как GCC не делает._EXPORT_STD template
_NODISCARD constexpr _Ty1&& get(pair&& _Pr) noexcept {
// get rvalue reference to element _Ty1 in pair _Pr
return _STD forward(_Pr.first);
}
< /code>
< /li>
gcc
template
constexpr _Tp&&
get(pair&& __p) noexcept
{ return std::move(__p.first); }
< /code>
< /li>
< /ul>
какой правильный?#include

int main() {
int i = 0;
int& r = i;
std::pair p{r, i};

int& ret = std::get(std::move(p));
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... -be-compil
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»