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

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