Рассмотрим следующий пример < /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
Мобильная версия