Evgenii
нет?
Vladislav
хм
Anonymous
[cling]$ struct Foo { Foo(const char* a) {} }; [cling]$ struct Bar { Bar(const Foo& a) {} }; [cling]$ Bar("aaa"); P.S. cling 0.4 с clang 3.9, C++11.
Anonymous
ругаться не собирается
Vladislav
может у тебя там explicit?
нет, там есть ссылка на код
Anonymous
Секунду, сейчас скажу
Anonymous
3>D:\Desktop\SOGL\examples\hello_mesh\main.cpp(79): error C2664: 'SOGL::Texture::Texture(SOGL::Texture &)': cannot convert argument 1 from 'const char [8]' to 'SOGL::TextureTarget' 3>D:\Desktop\SOGL\examples\hello_mesh\main.cpp(79): note: There is no context in which this conversion is possible
Anonymous
он пытается вызвать Texture(TextureTarget target);
Anonymous
explicit я нигде не использовал, можешь полистать код в репозитории
Evgenii
он пытается вызвать Texture(TextureTarget target);
а texturetarget какие конструкторы имеет
Anonymous
Это enum class TextureTarget
Anonymous
Больше ничего нет(
Anonymous
о!
Anonymous
я понял свою ошибку
Anonymous
я забыл слово const!
Anonymous
const Image& image
Vladislav
о, точняк
Anonymous
теперь заработало :3
Anonymous
спасибо за хелпу, ато я уже было отчаялся
Evgenii
компилятор должен был подсказать имхо
Anonymous
Должен был, но по факту выплюнул лишь то сообщение =(
Vladislav
clang подсказал бы, вроде как
Anonymous
как-то не очень информативно
Vladislav
как-то не очень информативно
ну почему, из последнего сообщения видно, что он не может к неконстантной ссылки привести
🦥Alex Fails
если важна производительность - надо заюзать примеры из RenderScript или Metal Performance Shaders в случае iOS. На андроиде на GPU считать тяжело - OpenCL обычно нет, в RenderScript писать неудобно (и не на всех девайсах он на GPU считается). На GLSL можно, но придётся руками делать всю фигню с тем, чтобы замапить текстуры. (впрочем, тоже копипастится из примеров). OpenCV - да, работает, но только на CPU (потому что OpenCL драйверов обычно нет, и надо сам SDK пересобирать с поддержкой). На новых CPU типа MSM8996 даже достаточно быстро. В принципе, на тех же новых процессорах даже примеры из SDK работают достаточно терпимо для того, чтобы обрабатывать видео с камеры. Ну, там, где они туда-сюда гоняют данные. В принципе, в Android есть API (ImageView), чтобы замапить буфер с камеры. И есть API, чтобы замапить выходной Surface. Если ориентация камеры совпадает с ориентацией устройства - то не надо делать тормозной поворот картинки. В таком случае даже на CPU можно быстро обрабатывать. ну то есть, для начала взять opencv.
#закладка #faq Либы для #imageprocess на #Android
Cate
с хэштегом закладка надо бы осторожнее:)
🦥Alex Fails
Да, наркоманы его зашкварили 😭
Anonymous
Парни, зачем может пригодится ~T() = delete? Если вообще может.
Anonymous
Вероятно, что так.
🦥Alex Fails
Парни, зачем может пригодится ~T() = delete? Если вообще может.
Чтоб не генерился dtor по умолчанию, к примеру
Anonymous
Ну а зачем это надо?
Anonymous
Ты либо пишешь свой деструктор, что уже значит, что дефолтного не будет, либо у тебя есть дефолтный.
Evgenii
ну разве что явно показать что память не трогаешь
🦥Alex Fails
Ну а зачем это надо?
Затем, для чего и приватный dtor
Anonymous
Ты либо пишешь свой деструктор, что уже значит, что дефолтного не будет, либо у тебя есть дефолтный.
При отсутствии обоих теряется возможность разрушать объект, зачем это может быть нужно?
🦥Alex Fails
#TЖиви
🦥Alex Fails
Утром отвечу конструктивнее , ща чот башка уже не варит
Anonymous
@foxcpp мм... Размещающий new продолжает работать: https://ideone.com/bBBaWW
Anonymous
Кстати, private деструктор - это немного другое. Удалять можно, но только во внутренних методах этого же класса или дружественных сущностях А вот если четко обрубать через =delete, то уже работать с памятью нигде нельзя Где в реальных задачках это может пригодиться - сам пока не знаю
🦥Alex Fails
Только пойнтер
🦥Alex Fails
в производном класе уже норм будет все
Anonymous
Не, про теорию я все понимаю. А мне интересно практическое использование. Все сводится к constexpr, const и размещающему new
Anonymous
а
Anonymous
https://ideone.com/oYYSW6
Anonymous
https://ideone.com/zhHcdv тоже самое со стеком
🦥Alex Fails
обманываешь? 3:
Виртуал сделай
Anonymous
🦥Alex Fails
как посплю - скажу точно
Nikita
практическое применение: хочешь извести легасятину @ ~LegacyWithOldAndInterestingStory() = delete @ пересобираешь @ смотришь, куда это непотребство пролезло
Anonymous
кей
Anonymous
Дяди в стандарты атрибуты привезли, а тут такие лайфхаки )) http://en.cppreference.com/w/cpp/language/attributes
Anonymous
[[deprecated]](C++14) [[deprecated("reason")]](C++14)
Anonymous
компулятор будет предупреждения кидать
Nikita
[[deprecated]](C++14) [[deprecated("reason")]](C++14)
если ты под rhel5 собираешь, то официально максимальная версия gcc — 4.8.2, нет там C++14
Nikita
да, не везде ещё rhel5 извели
Anonymous
ох, ну тогда ОК
Vladislav
в таком случае борьбу с легаси лучше начать с rhel5)
Vladislav
https://twitter.com/jfbastien/status/906310494893481984
Evgenii
Anonymous
Всем привет
Vladislav
Привет
Anonymous
Начали вот в колледже преподавать плюсы, решил потихоньку вливаться в сообщество)
Anonymous
Ооххх, хорошо пошла
Anonymous
Ну так вот. Стартую я значит такой Code Blocks... А мой батя шарпист уже собрался от меня отказываться
Anonymous
Да, после девятого