как-то запретить вызов as_time_point<some_clock, some_wrong_time_point>?
template<typename Clock,
typename TimePoint = std::chrono::time_point<Clock, std::chrono::milliseconds>>
TimePoint as_time_point()
{
auto time_point = TimePoint();
// fill time_point
return time_point;
};
Почему именно в темплейте тебе надо это сделать?
При использовании using'а в теле функции, например, приходится писать полностью возвращаемое значение
а какой смысл от запрета?
Чтобы этот второй параметр шаблона был только как алиас, чтобы пользователь его не мог заменить
Вроде как аргумент TimePoint доступен для изменения при вызове, а я просто хочу "алиас" для него ввести
decltype rettype используй, или как его там...
template<typename Clock, typename ..., typename TimePoint = std::chrono::time_point<Clock, std::chrono::milliseconds>>
Но такое точно требуется в поясняющем комментарии
Пожалуй я все таки буду пойду по этому пути, всем спасибо)
Я бы это в макрос обернул... У которого будет документация...
И как это выглядеть вообще должно?)
template<typename Clock> std::chrono::time_point<Clock, std::chrono::milliseconds> as_time_point() { using TimePoint = decltype(as_time_point<Clock>()); auto time_point = TimePoint(); // fill time_point return time_point; };
это типа для сфинае?
Не, просто уже не первый раз возникает этот вопрос. Обычно алиаса в теле функции хватает, но вот когда в сигнатуре один из таких типов, бывает многабукаф
типа почему не: template<typename Clock> auto as_time_point() { using TimePoint = std::chrono::time_point<Clock, std::chrono::milliseconds>; return TimePoint{}; }
Да, но я не фанат auto для возвращаемых значений
Обсуждают сегодня