Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30

Можно ли заставить следующий код работать в С++17 ?

19.06.2020, 14:47. Показов 2776. Ответов 27

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
 
size_t get_total_size(const auto& ... args)
{
  return (args.size() + ...);
}
 
void join_impl(auto& out,const auto& first, const auto& ... args)
{
  if constexpr(sizeof...(args)>0)
  {
    std::copy(std::begin(first),std::end(first),std::back_inserter(out));
    join_impl(out,args...);
  }
  else
  {
    std::copy(std::begin(first),std::end(first),std::back_inserter(out));
  }
}
 
/*  
Как тут вывести тип?
 
auto join(const auto& ... args)->decltype(args+ ...) 
{
  decltype(args+ ...) out;
  out.reserve(get_total_size(args ...));
  join_impl(out, args ...);
  return out;
}
*/
 
int main()
{
  std::vector v1 = {1,2,3};
  std::vector v2 = {4,5,6};
  std::vector v3 = {7,8,9};
 
 
  auto v = join(v1 ,v2,v3);
// auto v = join("1"s ,"2"s, "3"s);
  for(const auto& e:v)
    std::cout<< e;
 
 
  return 0;
}
Правильно ли я понимаю конструкция вывода типа "->decltype(args+ ...)" не рабочая даже для строк?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.06.2020, 14:47
Ответы с готовыми решениями:

Помогите заставить работать на сервере следующий код на JS
кто знает помогите заставить работать на сервере следующий код на JS: &lt;script language='JavaScript'&gt; document.write...

Можно ли заставить ЖД работать быстрее?
Подключил я внешний хард ко второму пню, чтобы перегнать туда инфу с компа, но появилась надпись типа винт работает медленно. Перетыкнул на...

Можно ли заставить десятку нормально работать?
Брат еще в январе купил себе новый современный комп с хорошим процессором и установленными лицензионными виндовс 10 и офис. Недели две...

27
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
20.06.2020, 13:45
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Avazart Посмотреть сообщение
Ну да, но лишь еще перегрузка тем более не для всех случаев это канает.
в смысле, не для всех?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.06.2020, 14:24  [ТС]
Для случая передачи const char* s= "3333" ведь не будет срабатывать
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
20.06.2020, 14:26
Цитата Сообщение от Avazart Посмотреть сообщение
Для случая передачи const char* s= "3333" ведь не будет срабатывать
Может и будет. Почему нет?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.06.2020, 14:29  [ТС]
https://en.cppreference.com/w/... tring_view

C++
1
constexpr basic_string_view(const CharT* s);
4) Constructs a view of the null-terminated character string pointed to by s, not including the terminating null character. The length of the view is determined as if by Traits::length(s). The behavior is undefined if [s, s+Traits::length(s)) is not a valid range. After construction, data() is equal to s, and size() is equal to Traits::length(s).
Traits::length(s) же скорее всего же через strlen() ?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
20.06.2020, 14:33
Цитата Сообщение от Avazart Посмотреть сообщение
Traits::length(s) же скорее всего же через strlen()
Нет, через std::char_traits<CharT>::length, а та, в свою очередь, через intrinsic-функцию
Цитата Сообщение от Avazart Посмотреть сообщение
Для случая передачи const char* s= "3333" ведь не будет срабатывать
https://godbolt.org/z/mHjLMB
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.06.2020, 14:40  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Нет, через std::char_traits<CharT>::length, а та, в свою очередь, через intrinsic-функцию
Не понял. Смотрю внутрь

C++
1
2
3
4
5
6
7
8
9
      static _GLIBCXX17_CONSTEXPR size_t
      length(const char_type* __s)
      {
#if __cplusplus > 201402
    if (__constant_string_p(__s))
      return __gnu_cxx::char_traits<char_type>::length(__s);
#endif
    return __builtin_strlen(__s);
      }
C++
1
2
3
4
5
6
7
8
9
10
  template<typename _CharT>
    _GLIBCXX14_CONSTEXPR std::size_t
    char_traits<_CharT>::
    length(const char_type* __p)
    {
      std::size_t __i = 0;
      while (!eq(__p[__i], char_type()))
        ++__i;
      return __i;
    }
Разве это не то же что и strlen ? Т.е. все равно циклом до терминирующего нуля.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
20.06.2020, 15:53
Цитата Сообщение от Avazart Посмотреть сообщение
Разве это не то же что и strlen ? Т.е. все равно циклом до терминирующего нуля.
Ну, ты же видишь __constant_string_p и __builtin_strlen.
https://stackoverflow.com/ques... mpile-time
Я не понимаю, как у них это всё работает (предпочитаю думать, что это читерство), но оно работает.

Добавлено через 5 минут
strlen, похоже, тоже умеет отрабатывать в compile-time. Я не знал

Добавлено через 2 минуты
Хотя, не всегда https://godbolt.org/z/XC88xM
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.06.2020, 18:08  [ТС]
Ясно, но как бы без оптимизации ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.06.2020, 18:08

Как заставить работать этот код?
Здравствуйте, помогите разобраться с ошибкой. Это первая моя программа . Сильно не ругайтесь. Программа из текстового документа получает...

как заставить этот код работать?)
for(h=1; h&lt;=30000; h++){URL GOTO=http://site/allusers; TAG POS=&quot;.h.&quot; TYPE=DIV ATTR=ID:add}

Можно ли следующий код сократить?
Можно ли следующий код сократить? case TabControl1.TabIndex of 0: s:= 'A'; 1: s:= 'B'; 2: s:= 'B'; 3: s:= 'C'; ...

Как можно заставить работать переменную Session?
Как можно заставить работать переменную Session? Мне нужно что бы за каждым посетителем, который заполняет формы на разных страницах...

Можно ли заставить Tomcat работать одновременно на 2-х портах
Мне нужно настроить Tomcat так , чтобы например на aaa.ru:80 - был один сайт, а на aaa.ru:8081 - другой - можно ли это сделать в tomcat,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru