C++: Что означает (-1) в конце списка параметров этой функции?

Я не понимаю определение функции ниже: Что означает (-1) в конце списка параметров?

template<typename RatioT = std::milli>                
bool rclcpp::client::ClientBase::wait_for_service (std::chrono::duration< int64_t, RatioT > timeout = std::chrono::duration< int64_t, RatioT >(-1) )

Источник:

Из этого урока:

Таймаут по умолчанию равен -1. Не имеет отношения к вашему вопросу: «Вы читаете документацию для версии ROS 2, которая достигла своего EOL (окончания срока службы) и больше официально не поддерживается. Если вам нужна актуальная информация, пожалуйста, взгляните на Джаззи».

jabaa 19.08.2024 12:24

Спасибо за ответ, думаю, я его понял. default = std::chrono::duration<int64_t, std::mini>(-1). Меня это просто смутило (-1). Я до сих пор не понимаю, что может означать тайм-аут -1. Но это нормально

no name 19.08.2024 12:34

Похоже, wait_for_service перенаправляет вызов на wait_for_service_nanoсекунды. Вы можете взглянуть на источник, чтобы узнать точное поведение.

wohlstad 19.08.2024 12:51

Это значение по умолчанию. Установите маловероятное значение, которого тайм-аут никогда не должен иметь. Лично я считаю, что такой API плох (магические числа). И должна была быть перегрузка функции, которая вообще не принимает таймаут, а перегрузка с таймаутом никогда не должна принимать отрицательные значения. (например, что делает такой API, когда вы передаете -2). Так что для меня это в основном плохой дизайн API.

Pepijn Kramer 19.08.2024 13:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
4
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это означает, что значением параметра по умолчанию является -1 (любого типа длительности, по умолчанию миллисекунды). Это значение (или, возможно, любое отрицательное значение) предположительно используется для обозначения «отсутствия тайм-аута», однако в документации по этому классу ничего не говорится о значении любого из параметров любой из функций-членов.

просто для придирок: значение параметра функции по умолчанию — std::chrono::duration< int64_t, RatioT >(-1). -1 — это параметр конструктора для создания параметра по умолчанию.

463035818_is_not_an_ai 19.08.2024 14:29

@463035818_is_not_an_ai Я произношу std::chrono::milliseconds(-1) как «-1 миллисекунда»

Caleth 19.08.2024 14:33

Другие вопросы по теме