Vitaliy ◀️TriΔng3l▶️
Но не классы
Vitaliy ◀️TriΔng3l▶️
И не copy, move и вся эта хрень
Vitaliy ◀️TriΔng3l▶️
Ignat
C11
Vitaliy ◀️TriΔng3l▶️
Оу
Ignat
ну это что-то очень странное
Vitaliy ◀️TriΔng3l▶️
И в MSVC их нет, я так понимаю?
Ignat
#define cbrt(X) _Generic((X), \
long double: cbrtl, \
default: cbrt, \
float: cbrtf \
)(X)
Ignat
такие вот инновации!
Ignat
про MSVC не в курсе
Ignat
зачем он, когда есть clang-cl?
Александр
Stanislav
Ignat
всё так
Vitaliy ◀️TriΔng3l▶️
По современным фичам
Ignat
без понятия
Berkus
Ignat
ну С вообще язык интересный
🦥Alex Fails
надо в C++ Добавить, кек
Рома
что лучше, sdl или allegro?
🦥Alex Fails
SFML
Рома
SFML
ну хз, там даже только недавно добавили возможность с буффером работать
Рома
и то только если с сорков компилить
🦥Alex Fails
а тебе что вообще нужно от библиотек такого вида: просто форточка опенгла (тип как в глуте/глфв) или еще набор кучи всего, до чего дотянулись создатели?
Рома
ну все 3 этих либы, тоже набор разный реализуют
Anatoly
понять не могу, а boost::hash для boost::any должен быть определен?
Рома
в чем тогда преймущество sfml от других? функционала как я понял меньше
Рома
+ что меньше памяти жрет, если проект большой
Alexander "SonnySlave"
Alexander "SonnySlave"
пихаешь any в хеш таблицу?
Alexander "SonnySlave"
хм, пишут, что должно пахать
Alexander "SonnySlave"
да вроде как должно хватать...
Alexander "SonnySlave"
сейчас сам потыкаю
Anatoly
возможно проблема в msvc 2017:
F:\Tools\vcpkg\installed\x64-windows\include\boost\functional\hash\extensions.hpp:262: error: C2664: 'size_t boost::hash_value(std::type_index)': cannot convert argument 1 from 'const boost::any' to 'std::type_index' [F:\Work\tolik.git\build-relation-algebra-Desktop_Qt_5_10_0_MSVC2017_64bit-Debug\ra.vcxproj]
Alexander "SonnySlave"
Anatoly
еще одна заморочка с msvc 2017:
struct foo {
foo() = default; //
foo(foo const&) = default;
foo(foo &&) = default;
template<typename T>
explicit foo(T&&) {} // (1)
};
...
foo f1{10}; // (1)
foo f2{foo{10}}; // (1)
foo f3{f2}; // (1)
по стандарту он должен вызвать для f2 foo(foo &&), а для f3 foo(foo const&), а вызывает во всех трех случаях (1)
🦥Alex Fails
надо б им зарепортить
Anton
Anton
Для f2, конечно, не правильно
Yegor
А как в терминалах интерфейсы мутят. То есть только определённые части текста например делают определенным цветом
Oleg
Под виндой вроде были системные вызовы для этого, остальные просто поддерживают VT100 и его управляющие последовательности. Какой-нибудь printf("\e[31mRED\e[0m\n"); выведет красненьким, и вот эти \e[31m — и есть escape-последовательности для работы с текстом.
Anatoly
Почему для f3 foo(foo const&)? Тип шаблона выведется как foo&, а он лучше (нет qualification conversion). См. http://eel.is/c++draft/over.ics.rank#3.2.6
потому что конструктор копий, если он присутствует, должен быть вызван в случае для f3 по определению копирующего конструктора:
12.8.1 Copy/move constructors [class.copy.ctor]
1 A non-template constructor for class X is a copy constructor if its first parameter is of type X&, const X&,
volatile X& or const volatile X&, and either there are no other parameters or else all other parameters
have default arguments (8.3.6).
Пока вышел из положения:
template <typename T, typename = std::enable_if_t<!std::is_same<foo, std::remove_reference<T>::type>::value>>
explicit foo(T&& data) {...}
Oleg
Расскажите лучше, как мне быть, если я хочу из static-метода вызвать make_shared, а конструктор у меня приватный. Интернет для такого предлагает или делать паблик Морозов-подкласс с публичным конструктором (и, видимо, делать его friend'ом) или переопределять у make_shared аллокатор и делать friend'ом этот аллокатор.
Kirill
Если нет вероятности что конструктор кинет ексепшн то и хер с ним с мейк шаредом. нью наше все
Kirill
А если так хочется и страшно что кинет ексепшн, прям внутри класса сделать свой статический мейк шаред
Александр
Kirill
Вай? Он видит нецмспейс и приватный конструктор
Kirill
Если он внутри, вопрос в том что это такое же решение, только без того чтобы плодить левую сущность и делать ее френдом
Александр
https://godbolt.org/g/GdnYiW
Александр
make_shared вызывает new из своих потрохов
Александр
поэтому куда ты ни суть std::make_shared, приватное останется приватным
RattenKong 🦧🐀🦍️
Он предлагает new, а потом указатель в ктор шейрда пихнуть
Kirill
Я сказал написать свой make shared
Kirill
только не френдом его делать а внутри. Делать френдом это сродни у синглтона метод get делать отдельным классом и френдом, можно но нахрена сущности плодить
Kirill
В вообще да. Если нет вероятности ексепшена в конструкторе, а ее скорее всего нет, то New и в шаред как я и предложил первым делом
Anton
все же главная фишка make_shared в том, что new зовется один раз, а не два... ну и exception safe
Anatoly
Arseny
А. Еще можно сделать конструктор публичный, но принимающий приватный тег.
Александр
А ещё на SO хитрый выход с созданием класса пустышки
class Dummy : A, а у A делаем закрытый конструктор. Также пробрасываем конструктор и создаём просто Dummy
Arseny
Это как раз то, о чем Олег в самом начале писал.
Александр
Да, точно, не заметил
🐙 Antony
вот так даже более эпично: https://godbolt.org/g/MS41Bp
В зависимости от типа скобок и версии стандарта выбираются разные перегрузки у GCC
🐙 Antony
Кажется что GCC наглючил, foo f3{f2}; должен вызывать (1), вне зависимости от стандарта
🐙 Antony
Минут через 15 заведу тикет
Mikhail
Привет всем! Не сочтите за рекламу, просто хочу спросить мнение прокачанных прогеров на плюсах. Сам уже 5 лет как в коммерческих разработках на плюсах не учавствую, только для себя в опен соурсных проектах свечусь, стараюсь от стандартов не отставать. Последнее время работаю с дот нетом, но хотелось бы в плюсы вернуться. Но понимаю, что много пропустил. Тут компания OTUS открывает набор на курсы по С++. Вроде программа не на джунов рассчитана. Вот думаю стоит на курсы эти записываться или нет. Курсы 40 тыс.р. стоят и длятся 5 месяцев. Не большие деньги, но и не малые. Может кто что слышал об OTUS? Может кто мнение свое скажет? Стоит оно того или нет, для освежения памяти?
Matwey
А давайте проведем тут голосование, кто когда-либо ходил на какие-нибудь платные курсы
Mikhail
Anatoly
Yaroslav
через @vote
Anatoly
Anonymous
Курсы тебе точно ничего нового не расскажут
Anonymous
Точнее, то количество нового, что ты услышишь, не будет стоить твоих денег