Задать вопрос
  • Как правильно оформить шаблон функции в классе с++?

    @MarkusD Куратор тега C++
    KeyDel , что такое map_type и в каком именно коде при вызове addData транслятор выдает ошибку?
  • Почему C/C++ проекты очень долго компилируются?

    @MarkusD Куратор тега C++
    zeuss56, а... конкурентная сборка. :)
    Ктож мог подумать что у тебя она не включена. Хорошо что теперь она работает. Я, в свое время и давным давно, тоже не сразу про нее узнал и транслировался по 30-40 минут. Когда указал "-j" на все ядра, время полной сборки того проекта сократилось до 3-5 минут.

    Я могу еще такое рассказать. На время трансляции сильно влияет и сам код. Например, обилие макросов в коде очень сильно повышает время трансляции. Буквально катастрофически. На моем богатом опыте, увеличение времени от обилия макросов достигает +40..60% общего времени трансляции. Неправильное использование форм директивы #include может привести к увеличению времени трансляции до +20%. Т.н. "include guard"-ы [?] спокойно увеличивают время трансляции до +5..10%. Любая эвристика с логарифмической трудоемкостью в шаблонах и при обильном использовании приводит к увеличению времени трансляции до +8%.
    Факторов увеличения времени трансляции C++ кода вообще довольно много. Поэтому большие проекты на C++ обычно собираются порядка часа или двух. Даже при условии распределенной сборки.
    Тут главное - это просто понимать неизбежность последствий использования тех или иных конструкций языка.
  • Как назвать такую конструкцию?

    Владимир Коротенко , это зависит от того, какую функциональность эти самые POCO объекты выполняют и как организован доступ к ним. Даже если бы ты хотел оформить это синглтоном, синглтоном оно бы не называлось, т.к. Singleton - это шаблон уровня дизайна, а не прикладного уровня.
  • Как слепить пять слов в одно через пробелы?

    @MarkusD Куратор тега C++
    Данил Васькевич, код strcat_s(res, 100+strlen(sentense1), sentense1);.
    Расскажи своими словами и максимально детально, что именно делается в этом коде.
  • Как я могу заблокировать getch() из ncurses на несколько секунд?

    @MarkusD Куратор тега C++
    Trimsky , ответ на этот вопрос ты всегда можешь узнать из документации функции.
  • Как в шаблоне Си++ отличить константный буфер от строкового литерала?

    @MarkusD Куратор тега C++
    Mercury13, а, понятно. Да не, с decltype в этом месте все в порядке.
    Просто я изначально не совсем понял что под константным буфером понимается простой статически выделенный массив.
    Собственно, с этим и есть некоторая проблема касательно твоего вопроса. Ведь строковой литерал имеет тип const char[N]. Т.е. после получения характеристики ODR-used и размещения в статической памяти это будет точно такой же статически выделенный массив константных символов.

    Их можно различить только на этапе компиляции, чисто теоретически. Но и там литерал не будет отличим от constexpr статически выделенного массива.
    Можно попробовать покопаться вокруг вот такого хака. Хоть он и на C, возможно из этого можно вынести какие-нибудь идеи для C++ и constexpr.

    Готового решения у меня, откровенно, нет. Но я подумаю над этим вопросом. :)
  • Как в шаблоне Си++ отличить константный буфер от строкового литерала?

    @MarkusD Куратор тега C++
    Mercury13 , давай тут для начала с терминологией разберемся.
    Ради оптимизации на обычных строковых литералах (первый юнит-тест) я пошёл на неочевидную работу на константных буферах (второй юнит-тест).

    str::concat("alpha\0\0", "bravo"sv)
    Вот тут используется строковой литерал "alpha\0\0" и строковой литерал "bravo" с приведением его к std::string_view. Верно я ведь понимаю?

    str::concat(const_cast<const decltype (a)&>(a), b)
    a ты называешь константным буфером? Я правильно понимаю?
  • Как уменьшить загрузку процессора при свернутом окне программы?

    @MarkusD Куратор тега C++
    Glace , а где у тебя в вопросе твой код цикла обработки сообщений и, собственно, та самая on_message?
  • Как стереть элемент с помощью vector.erase()?

    @MarkusD Куратор тега C++
    arteskin , эта идиома называется erase-remove [?].
    Свое условие ты можешь задать при использовании std::remove_if [?].
  • Как правильно масштабировать 2d объекты в opengl?

    @MarkusD Куратор тега C++
    Anthony228357 , процесс настройки контекста нетривиален. Твой вопрос относится именно к настройке контекста. Тебе стоит показать свой код настройки чтобы можно было определить, чего и в каком объеме тебе не хватает для настройки правильного отображения пространства в любом разрешении и при любом соотношении сторон.

    Наперед просто скажу, что у знакомых с графическими API людей описываемой тобой проблемы никогда не возникает.
  • Ноутбук ни на что не реагирует. В чем может быть причина?

    shibal,
    Но если батарея сдохла, то разве ноут не должен был продолжить работу, так как он был подключен к сети?

    Конечно. Батарея в ноуте только заряжается при подключении БП и никак не участвует в его работе до отключения БП.

    Если все хорошо с ноутом и дело только в батарее, значит по идее если я сниму батарею, то ноут должен включиться разве не так?

    Нет, он может находиться в защите питания.

    Я также подозреваю что проблема в батарее, так как перед тем как он вырубился окончательно, сначала ноут вырубился просто так

    Если ноут находится в защите питания, его оттуда достать можно только особым образом. Детали можно узнать в сервисном руководстве к ноуту. Но режим защиты питания сперва еще надо распознать. Ноут может быть и в режиме защиты электроники, тогда надо найти неисправный компонент и удалить его. Так же наперво тебе надо, все-таки, правильно определить работоспособность БП.

    Причин может быть уйма. Думаю, тебе лучше все-таки в сертифицированный СЦ обратиться. За деньги любой СЦ выполняет любые работы.
    Я не получаю от тебя нужной информации, поэтому мне больше нечего тебе предложить.
  • Ноутбук ни на что не реагирует. В чем может быть причина?

    shibal,
    Амперметром

    Ну это ни о чем не говорит. Ты мог просто положить амперметр рядом и видеть что он ничего не регистрирует.
    Какую конкретную технику снятия показаний ты использовал?
    БП ведь тоже не дурак, ему свой преобразователь в холостую гонять незачем. Преобразователь тупо горит без нагрузки. Поэтому если ты снимал показания с ненагруженного БП, то и удивляться его пассивности не стоит.

    На моем ASUS G750JS от 2013 года батарея померла в 2018м году. Это даже при условии того что я очень бережно к ней относился. Ноут же после этого просто работал в режиме ПК, т.е. исключительно от сети. Это нормально.
    Другая штука - это почему твой ноут однажды внезапно выключился. Если внезапно, то это может быть в результате защиты от поломки электроники. Тот же G750JS в 2016 году начал отключаться потому что при деформации клавиатуры от печати стала прогибаться плата оперативной памяти под клавиатурой. Я заменил оперативу и переместил обе плашки вниз. После этого проблем с выключением больше не было.
    Моя знакомая как-то смогла свой Sony VAIO увести в защиту питания. В этом режиме, пока не сделать нужное сервисное колдунство, ноут напоминает кирпич. Но я нашел сервисное руководство к ноуту и вынул тушку из этой комы. Режим защиты питания у твоего ноута тоже есть. Обычно такой кирпич остается только в авторизованный СЦ нести.
    БП все того же G750JS легко уходит от ответственности питать ноут если видит что к его выходу ничего не подключено. Образумить БП возможно только включив его с нагруженным выходом в сеть. Без подключения к ноуту, иными словами, БП питание на выходе не показывал вообще.

    Как видишь, причин просто выше крыши. А информации ты выдал пока крайне мало.
  • Ноутбук ни на что не реагирует. В чем может быть причина?

    shibal , назови точную модель этого ноутбука.
    Я проверил зарядное устройство и оно получает питание из розетки, но не передает его в ноутбук.

    Как и чем конкретно ты это проверил?
  • Почему не работает dynamic_cast?

    @MarkusD Куратор тега C++
    maaGames, там дело в том, что объявление шаблона находится в .h, а вот определение - уже в .cpp.

    syxme, это недопустимо. Определение шаблона всегда должно быть видно из места его инстанцирования.
    Если ты объявил шаблон в заголовке, определить его ты тоже должен в заголовке. Или, как минимум, непосредственно перед инстанцированием.
  • Почему не работает dynamic_cast?

    @MarkusD Куратор тега C++
    syxme , header.h и code.cpp, все именно так?
    И это шаблон глобальной функции?
  • Как правильно написать template функцию для контейнеров?

    @MarkusD Куратор тега C++
    Wataru, ну яж об этом и написал выше. Просто я написал это уже после размещения основного текста комментария, т.к. предпочитаю не спамить, а дополнять свой последний комментарий.
  • Как правильно написать template функцию для контейнеров?

    @MarkusD Куратор тега C++
    Wataru, все комментарии относятся только к твоему примеру, который и нуждается в SFINAE.
    Ты точно увидел пример? Точно видел выдачу транслятора?
    Решить-то через SFINAE можно, но зачем? Достаточно просто знать правило перегрузки и выбора шаблонов.
  • Как правильно написать template функцию для контейнеров?

    @MarkusD Куратор тега C++
    Wataru, стоп-стоп.
    template <class Container>
    void print(const Container& c, string sep=" ", string end="\n")

    Вот этот код не решает задачу автора.

    А в отношении моего кода ты не прав. Давай на примере рассмотрим.
    Выбор шаблона перегрузки выполняется от более конкретного шаблона к менее конкретному.
    Шаблон
    Print( const TStorage<TItem, TAllocator>& storage )
    имеет большую конкретику, шаблон Print( const TValue& value ) не вступает с ним в конфликт, т.к. является менее конкретным, т.е. более общим. Описанной тобой проблемы у меня нет.
    На деле же у меня добрая половина всего фреймворка пронизана этим правилом. Продемонстрированные мной утилиты контейнеров - только одна небольшая часть. И все находится в рамках стандарта.
  • Как правильно написать template функцию для контейнеров?

    @MarkusD Куратор тега C++
    Wataru, рабочий код находится по ссылке в единственном комментарии под вопросом.
    Я честно не понимаю почему автор проигнорировал это.

    Обрати внимание на то, как организованы перегрузки функций. Это не идеальное решение, но текущие потребности оно покрывает с большим запасом.
  • Как правильно написать template функцию для контейнеров?

    @MarkusD Куратор тега C++
    Wataru, и зачем весь этот код нужен?
    Неужели ты предлагаешь задействовать SFINAE там, где достаточно перегрузки с выводом типа параметров?