Что означает func_call (auto (arg1), auto (arg2))? [дублировать]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что означает func_call (auto (arg1), auto (arg2))? [дублировать]

Сообщение Anonymous »

В стандартной библиотеке Clang я смотрел внутрь функции C ++ 23 std :: string :: resize_and_overwrite , и код делает вызов функции с аргументами:

Код: Выделить всё

func_call(auto(arg1), auto(arg2));
< /code>
Вот весь код, я прокомментировал бит, о котором я имею в виду, это внизу: < /p>
#if __cplusplus > 202002L
template
template
constexpr void
basic_string::
resize_and_overwrite(const size_type __n, _Operation __op)
{
const size_type __capacity = capacity();
_CharT* __p;
if (__n > __capacity)
{
auto __new_capacity = __n; // Must not allow _M_create to modify __n.
__p = _M_create(__new_capacity, __capacity);
this->_S_copy(__p, _M_data(), length()); // exclude trailing null
#if __cpp_lib_is_constant_evaluated
if (std::is_constant_evaluated())
traits_type::assign(__p + length(), __n - length(), _CharT());
#endif
_M_dispose();
_M_data(__p);
_M_capacity(__new_capacity);
}
else
__p = _M_data();
struct _Terminator {
constexpr ~_Terminator() { _M_this->_M_set_length(_M_r); }
basic_string* _M_this;
size_type _M_r;
};
_Terminator __term{this};

auto __r = std::move(__op)(auto(__p), auto(__n)); // = 0 && __r  __n)
__builtin_unreachable();
}
#endif // C++23
Аргумент __p - это просто член .data string (первый символ), а аргумент __n - это просто параметр, переданный в функцию, которая представляет собой размер строки, запрошенной для изменения размера. Что такое синтаксис Auto (__ p) , Auto (__ n) ?

Подробнее здесь: https://stackoverflow.com/questions/796 ... oarg2-mean
Ответить

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

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

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

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

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