LINUX.ORG.RU

Сообщения KennyMinigun

 

Подскажите контейнер для const обьектов

Все прекрасно знают (или сейчас узнают), что std::vector не умеет в const T. Хотя, вполне себе можно представить как такой контейнер будет себя вести:

  • под капотом std::aligned_alloc
  • добавляем через emplace_back(Args&&), который делает placement new
  • operator[] отдает через std::launder (C++17)

У меня есть метод, что подтягивает данные с базы. Хочу возвращать контейнер с const обьектами. Чтоб означить, что их не следует менять. Конечно ничего не мешает возвращать не-const

Есть ли что-нибудь на замену std::vector, чтоб самому не писать? Может boost?

 ,

KennyMinigun ()

Просьба срочной публикации новости

Сабж: Конкурс обоев для KDE Plasma 5.16

Дедлайн конкурса очень даже скоро: 29 мая. Чем раньше опубликуется новость, тем больше у людей времени.

Благодарю!

cast @Shaman007 @jollheef @CYB3R

 , ,

KennyMinigun ()

Krita падает на Qt 5.12

Падает с приблизительно таким сообщением:

free(): double free detected in tcache 2

Предыдущие строчки лога чаще всего не повторяются, так что думаю, что к ошибке не относятся. Но на всякий случай пример лога: https://paste.ubuntu.com/p/Cd8VsRT28W/

Покопавшись в инетах, я нашел похожий по симптомам багрепорт: https://bugzilla.redhat.com/show_bug.cgi?id=1666197

Который, в свою очередь, отсылает к: https://bugreports.qt.io/browse/QTBUG-72488

На реддите пишут, что в мейнстриме Krita уже заворкераундили: https://www.reddit.com/r/krita/comments/aanv5s/krita_crashes_when_opening_new_file/

В связи с чем реквест к @Sunderland93. Можете залить свежую версию для Ubuntu Disco в Krita Lime PPA? Спасибо заранее.

 , ,

KennyMinigun ()

C++ обошел Python по популяности

Как сообщает https://www.technotification.com/2019/04/c-knocks-python-out-of-top-three.html

согласно индексу TIOBE C++ переместился на третье место по популяности. Взрастание популярности вероятно обусловлено изменениями в стандарте начиная с C++11 и поддержкой среди «главных» компиляторов: GCC, Clang и Visual Studio.

 , ,

KennyMinigun ()

is_assignable<int, int> == false

Сабж. Но почему?

#include <type_traits>
int main() { return std::is_assignable_v<int, int>; }
// --> 0

https://wandbox.org/permlink/59MyGGpqRz2q1zzq

 ,

KennyMinigun ()

Накладывает ли LGPLv3 ограничения на производимые результаты?

Вопрос таков: если использовать инструмент под LGPLv3, то можно ли считать произведенные им результаты «work based on»?

https://choosealicense.com/licenses/lgpl-3.0/

https://www.gnu.org/licenses/gpl-3.0.en.html

A “covered work” means either the unmodified Program or a work based on the Program.

To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

Например, подпадает ли код (текст) написанный в Qt Creator (Community) под определение «covered work»? Причем, код не использует Qt.

 , , ,

KennyMinigun ()

Милота

Листал я тут lorquotes. Глядите, что нашел http://www.lorquotes.ru/quotes-autor.php?id=56

Вице президент компании, Джеймс Гослинг, аргументировал данное решение тем, что потенциал мобильных устройств вырос, и настало время, когда они могут справиться с полнофункциональной версией Java.

В телефоны стали ставить двухядерные процессоры с гигом оперативной памяти? Я что то пропустил?
JB (*) (24.10.2007 04:54:21) (Источник)

Если это не вызывает у вас умилительную улыбку на лице, тогда…

 , , ,

KennyMinigun ()

Такое вообще легально?

Есть шаблонная декларация с возвращаемым типом auto и без «trailing return type». GCC и Clang едят. Такое вообще легально?

Код:

foo.h

#pragma once

#include <string>
#include <utility>

class Foo {
public:
  explicit Foo(std::string name) : _name{std::move(name)} {}

  void bar() const;

private:
  template <typename Callback>
  auto wrap(Callback&& c) const; // <-- !!!
  
  const std::string _name;
};

foo.cpp

#include "foo.h"

#include <iostream>

template <typename Callback>
auto Foo::wrap(Callback&& c) const {
  return [&]() {
    std::cout << "das ist ein Wrapper aus " << _name << '\n';
    c();
  };
}

void Foo::bar() const {
  auto f = wrap([]() { std::cout << "das is ein Lambda\n"; });
  f();
}

main.cpp

#include "foo.h"

int main() {
  Foo foo{"Foo #1"};
  foo.bar();
}

Выводит (как и задумывалось):

das ist ein Wrapper aus Foo #1
das is ein Lambda

GCC: https://wandbox.org/permlink/jXIrkG0U13I9ZRnP
Clang: https://wandbox.org/permlink/6hs2OoxNpzhnu9iX

 ,

KennyMinigun ()

Симулятор трусов

Разыскиваются поигрульки c более-менее внятным графонием по типу Nier Automata или Tomb Raider. Чтоб главная героиня (или со-героиня) постоянно была в кадре. Жанр не важен. Дискач

 ,

KennyMinigun ()

Не уверен баг ли в GCC или нет

Есть код с C++Weekly от Jason Turner (только немного изменены имена): https://wandbox.org/permlink/EWlifMBMhvBhSn5B

Info: http://eel.is/c++draft/temp.variadic#5

template <typename... Functors>
struct CompositeVisitor : public Functors...
{
#if 1
  template <typename... Args>
  CompositeVisitor(Args&&... args) : Functors{std::forward<Args>(args)}...
  {
  }
#endif

  using Functors::operator()...;
};

template <typename... Functors>
CompositeVisitor(Functors...) -> CompositeVisitor<std::decay_t<Functors>...>;

struct Foo {};
struct Bar {};
struct Baz {};

int main() {
  CompositeVisitor visitor{
    [](const auto&) { std::puts("got some part"); return true; },
    [](const Bar&) { std::puts("got Bar"); return false; }
  };
  
  Foo foo;
  Bar bar;
  Baz baz;
  
  visitor(foo);
  visitor(bar);
  visitor(baz);
}

Clang собирает и работает, GCC не хочет:

prog.cc: In instantiation of 'CompositeVisitor<Functors>::CompositeVisitor(Args&& ...) [with Args = {main()::<lambda(const auto:1&)>, main()::<lambda(const Bar&)>}; Functors = {}]':
prog.cc:30:3:   required from here
prog.cc:11:72: error: mismatched argument pack lengths while expanding 'Functors'
   11 |   CompositeVisitor(Args&&... args) : Functors{std::forward<Args>(args)}...
      |                                                                        ^~~

Если подать типы Functors explicit, то собирается. Только с лямбдами немного накладно сделать.

Баг ли?

 , , ,

KennyMinigun ()

Unlegacy AOSP 9.0 + OpenGapps на Nexus 5

Накатил тут на Nexus 5 сборку от Unlegacy: https://forum.xda-developers.com/showpost.php?p=74514638&postcount=3

Однако GApps отказывается ставиться:

Open GApps micro 9.0 - 20190303
 
- Mounting  /persist /system
 
- Gathering device & ROM information
 
*** Incompatible Android ROM detected ***
 
This GApps pkg is for Android 9.0.x ONLY
Please download the correct version for
your ROM: 5.1.1 (SDK 22)

Прикол в том, что даже factory image для девайса не 5.1 (a 6.0)

На форуме и в интернетах ответа не нашел. Может есть кто подскажет чего?

cast @DATRAT

 , , ,

KennyMinigun ()

LLVM 8.0 почти вытужили

На официальном http://llvm.org по графику:

  • 8.0.0:
    • Jan 16: Branch point, rc1
    • Feb 6: rc2
    • Feb 27: final

Но релиза все еще нет: https://prereleases.llvm.org/8.0.0/

На форониксе уже 26-го зафигачили новость: https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Clang-8.0-Features

Кому там скор надо? Расчехляйте машину времени и вперед новость писать!

 , , , ,

KennyMinigun ()

Разочарованным в BMTH - amo

Речь о последнем альбоме Bring Me The Horizon под названием amo. Кто в теме, знает насколько «другой» данный альбом.

Так вот, тут недавно одна неплохая группа из Deutchland сделала из nihilist blues нечто: https://www.youtube.com/watch?v=VLGRymyT-mM

Enjoy!

А линукс тут при том, что смотри теги.

 , ,

KennyMinigun ()

Гномеры нашли повод выпилить очередную фичу

Из GNOME Shell убирают прозрачность панели когда прииложения не развенуты на полную. Поводом стала «нечитабельность текста и значков» при светлых обоях.

Рапорт проблемы был создан 2 года назад и было прежложено три варианта решения:

  1. Удалить фичу
  2. Использовать размытие (blur) фона
  3. Сделать фон текста темнее и с градиентом

Но в течении двух лет никто ничего так и не сделал, потому была выбрана опция 1.

Источник: https://www.omgubuntu.co.uk/2019/02/gnome-shell-translucent-top-panel-effect-removed

 , ,

KennyMinigun ()

LLVM почти закончил переход на Git

Хорошая новость такова, что LLVM уже закончил техническую часть миграции на Git. Если не будет «last minute objections», то формально тоже скоро закончат. Еще один гвоздь…

Плохая новость такова, что они мигрируют на GitHub.

Проект будет находиться тут: https://github.com/llvm/

Официальная статья на LLVM.org
Новость на Phoronix

 , , , ,

KennyMinigun ()

«Елочки» не отрисовываются при ответе на голосование

Steps to reproduce:

  1. https://www.linux.org.ru/vote-vote.jsp?msgid=14576180
  2. PROFIT!111

Вестимо, где-то лишний escape.

 , ,

KennyMinigun ()

C++ codestyle: когда использовать `struct`

Касательно code style. Не холивара (struct vs class) ради.

Веду парочку pet-проектов, придерживаюсь одинакового code style в них. Причем, сам code style в процессе разработки изменяется (как я считаю нужным). Сейчас вот задумался над такими пунктами:

  1. struct keyword should be used for types which do not have access specifiers (i.e. all members are public)
  2. struct keyword can also be used for data straightforward objects that provide merely getters and setters
  3. Implicit private section of class should not be used. I.e. the private access specifier should be used explicitly

А почему создал данную тему – я не уверен что написать в ‘‘rationale’’ для данных правил. Т.е. выгдядит, как вкусовщина.

Помогите придать смысла или отказаться от них.

 , ,

KennyMinigun ()

Можно создать голосование на меньше чем 2 пункта

Сабж: www.linux.org.ru/polls/polls/14670374

Баг? Фича?

 , , ,

KennyMinigun ()

Для std::vector, полезен ли .reserve() перед std::move в конец оного?

Вопрос о std::move для range: https://en.cppreference.com/w/cpp/algorithm/move

Полезно ли делать .reserve перед тем, как добавлять элементы в конец контейнера с помощью вышеупомянутой функции и std::back_inserter? Или STL сам это уже делает?

std::vector<T> result;
while (someCondition) {
  // ...
  std::vector<T> part = process();
  result.reserve(result.size() + part.size()); // <-- сабж, полезно ли?
  std::move(part.begin(), part.end(), std::back_inserter(result));
}

 

KennyMinigun ()

Всем Disco Dingo, леди и джентельмены

Сабж, название следующего выпуска Ubuntu будет Disco Dingo. Танцуем, что ли.

https://www.omgubuntu.co.uk/2018/10/ubuntu-19-04-name-revealed

 , , ,

KennyMinigun ()

RSS подписка на новые темы