
Anatoly
30.06.2017
10:14:25
был напуган

reagentoo
30.06.2017
10:14:31
зачем плюсы накрепляются?
к каждой лямбде

Alex Фэils?︙
30.06.2017
10:14:43

Google

Anatoly
30.06.2017
10:15:34

reagentoo
30.06.2017
10:15:38
интересно, это полнолстью констекспровый список инициализации или нет

Anatoly
30.06.2017
10:15:50
вот если рассматривать +[]{return 1;}

reagentoo
30.06.2017
10:17:51

Alex Фэils?︙
30.06.2017
10:18:19

Anatoly
30.06.2017
10:18:55
в данном случае используется вот это
6 The closure type for a non-generic lambda-expression with no lambda-capture has a conversion function to
pointer to function with C++ language linkage (10.5) having the same parameter and return types as the
closure type’s function call operator.
+ применяется к указателю int (*)()

reagentoo
30.06.2017
10:19:58

Anatoly
30.06.2017
10:20:15
в данном случае определенный
decltype(+[]{return 1;}) == decltype(int(*)())

Александр
30.06.2017
10:21:56

reagentoo
30.06.2017
10:22:09

Anatoly
30.06.2017
10:22:52
если без + уникальный тип лямбды

Google

reagentoo
30.06.2017
10:24:20
короче без плюсиков плюсики не могут

Anatoly
30.06.2017
10:24:54
почему всегда?
у VS2015 +[]{return 1;} не переваривает

Александр
30.06.2017
10:26:50
хреновый VS2015

Anatoly
30.06.2017
10:27:31
я передам :)

Berkus
30.06.2017
10:28:11
это не по стандарту

Anatoly
30.06.2017
10:29:38
int(*l[])() = { ([]() {return 0; }) , []() {return 1; } };
вот это студия кушает

Berkus
30.06.2017
10:29:58

Anatoly
30.06.2017
10:30:15

Berkus
30.06.2017
10:30:23
окай

reagentoo
30.06.2017
10:30:28
попытался нащупать с какой версии работает — оказывается очень давно. gcc-4.6.4 c++0x

Berkus
30.06.2017
10:31:04
век воли не видать
prog.cc:4:28: error: lambda-expression in unevaluated context
std::cout « decltype(+[]{return 1;}) == decltype(int(*)()) « std::endl;

Anatoly
30.06.2017
10:31:54
попробуй
auto a = +[]() {return 0; };
decltype(a)
вообще говоря, увидев +[]{return 1;} я прифигел
остается вопрос: унарный + можно применять к указателю на функцию?
если по стандарту, то может
7 The operand of the unary + operator shall have arithmetic, unscoped enumeration, or pointer type and the
result is the value of the argument. Integral promotion is performed on integral or enumeration operands.
The type of the result is the type of the promoted operand

Google

Anatoly
30.06.2017
10:35:52
тогда это не extention gcc/clang

Berkus
30.06.2017
10:40:39
если пойнтер - то не экстеншен, но выше ты постил что там conversion operator
это получается implicit conversion to pointer триггерится плюсиком
тогда встает вопрос к гражданину Дроздову почему студия это не жрёт

Andrii
30.06.2017
11:05:28
ребят, кто-то пробовал в мобильную разработку на плюсах? интересует как android, так и ios (возможно, кроссплатформ). знаю, что есть в qt, но хз, как там под ios будет) еще знаю, что теперь visual c++ вполне подходит для разработки кроссплатформенных мобильных приложений, к тому же vs17 так же предоставляет инструменты виртуализации (физический айфон не нужен, получается), по этому вроде как этот вариант ярче кажется, чем qt. что вы думаете по этому поводу? кто-то уже пробовал? поделитесь опытом плес)

Anatoly
30.06.2017
11:09:24
что-то мне подсказывает, что С++ на базе Android NDK оправдывает себя только на очень низком уровне и то если ты получил просадку в производительности, используя рекомендованный Google-ом Android SDK.
если ты хочешь игру замутить, то смотри на Unity, если хочешь что-то социалки смотри в сторону Ionic на базе Cordova или ReactJS. В противном случае, получить конфетку на С++ потребует несоизмеримых затрат по сравнению с другими инструментами


Matway
30.06.2017
11:14:18
ребят, кто-то пробовал в мобильную разработку на плюсах? интересует как android, так и ios (возможно, кроссплатформ). знаю, что есть в qt, но хз, как там под ios будет) еще знаю, что теперь visual c++ вполне подходит для разработки кроссплатформенных мобильных приложений, к тому же vs17 так же предоставляет инструменты виртуализации (физический айфон не нужен, получается), по этому вроде как этот вариант ярче кажется, чем qt. что вы думаете по этому поводу? кто-то уже пробовал? поделитесь опытом плес)
Мы пробовали. У нас написан движок, который позволяет один и тот же C++ код запускать под asm.js/Android/Linux/NaCL/OSX/Windows. Стоило это три-четыре месяца работы. Переписывать приходится всё (например, нельзя использовать NativeActivity на Андроиде - он не на всех девайсах нормально работает, поэтому его надо было переписывать). Плюс добавлять freetype/libogg/OpenSL ES и т.д. код. В общем, это очень дорого.


Berkus
30.06.2017
11:18:22
ребят, кто-то пробовал в мобильную разработку на плюсах? интересует как android, так и ios (возможно, кроссплатформ). знаю, что есть в qt, но хз, как там под ios будет) еще знаю, что теперь visual c++ вполне подходит для разработки кроссплатформенных мобильных приложений, к тому же vs17 так же предоставляет инструменты виртуализации (физический айфон не нужен, получается), по этому вроде как этот вариант ярче кажется, чем qt. что вы думаете по этому поводу? кто-то уже пробовал? поделитесь опытом плес)
ну я пишу c++ lib + JNI + Java classes

Antony
30.06.2017
11:18:46

Berkus
30.06.2017
11:19:46
буст собираю под андроид, 1.63 и выше работает хорошо

Anatoly
30.06.2017
11:19:52
Антон, если есть уже код на С++, то, конечно, не рационально его портировать.

Anatoly
30.06.2017
11:22:17
Хотя ребята из Oracle из команды Netbeans для того, чтобы использовать инструменты CLang-а в своей IDE прогнали clang clang-ом, получили AST и написали кодогенератор в Java байт код.
отбросив вариант с JNI

Berkus
30.06.2017
11:23:25
ну JNI довольно мерзкая фигня

Antony
30.06.2017
11:23:42

Berkus
30.06.2017
11:23:45
как апи он почти неплох, но надо всегда за всем следить, global refs там
я его конечно в удобный c++ завернул и даже выложил этот хелпер на bintray

Andrii
30.06.2017
11:24:46
нет, кода никакого нет еще. приложение совсем простое: есть веб-приложение, а это мобильное приложение просто по сути обертка + несколько функций, которые работают с подкачанными данными, сами функции посредственные, данных не предполагается слишком много. оптимизация от выбора с++, скорее будет незаметна. почему с++? просто из моих собственных предпочтений. мне нравится этот язык, и хотелось опробовать новые инструменты и платформы, но без лишней накладной боли. я так понял, что по сути писать на с++ под андроид можно, но больно. соответсвенно, для моих скромных требований это стрельба из пушки по воробьям, я правильно все понял?)

Berkus
30.06.2017
11:25:45
если писать gui - то больно, следуй советам больших контор - они пишут на плюсах общую портабельную либу с бизнес-логикой, а весь гуй оставляют нативный

Google

Berkus
30.06.2017
11:26:10
как минимум dropbox про это статью накатали пару лет назад


Antony
30.06.2017
11:29:04
нет, кода никакого нет еще. приложение совсем простое: есть веб-приложение, а это мобильное приложение просто по сути обертка + несколько функций, которые работают с подкачанными данными, сами функции посредственные, данных не предполагается слишком много. оптимизация от выбора с++, скорее будет незаметна. почему с++? просто из моих собственных предпочтений. мне нравится этот язык, и хотелось опробовать новые инструменты и платформы, но без лишней накладной боли. я так понял, что по сути писать на с++ под андроид можно, но больно. соответсвенно, для моих скромных требований это стрельба из пушки по воробьям, я правильно все понял?)
Под Андройдом нельзя запустить чистое C++ приложение (если ты не производитель устройств). Под Андройдом можно запускать только Яву, которая вызывает С++. Все простое взаиможействие с UI через Яву идёт.
Тоесть если приложение нужно только чтобы UI отрисовать, то просто негде будет применить C++

Stanislav
30.06.2017
11:29:59

Arseny
30.06.2017
11:30:05
И взаимодействие между java и c++ довольно мерзкое.

Stanislav
30.06.2017
11:30:16
у тех же qt есть небольшая обертка на жабке
если нужны спицифик фичи платформы, добро пожаловать в жабомир

Admin
ERROR: S client not available

Andrii
30.06.2017
11:31:13
(((

Berkus
30.06.2017
11:31:58

Stanislav
30.06.2017
11:32:04
ну а в целом, я тот же openhomm свой ( не касасяь деталей opegnl) вполне просто запустил на андроиде

Antony
30.06.2017
11:32:28
у тех же qt есть небольшая обертка на жабке
Я про Qt на Андройде ничего не знаю. Кто-нить может вкратце рассказать как оно работает? Оно провязоно с Java, или просто отрисоввывает всё под капотом через OpenGL как игры делают?

Berkus
30.06.2017
11:33:13
покажу кусочек кода
void
ClientListener::onMemberAdded(ITMemberPtr memberPtr)
{
LOGP_D(TAG) << "onMemberAdded";
ScopedLocalRefFrame localFrame;
auto clientContext = getClientContextFromNativeHandle(localFrame, chatClient_);
RETURN_IF_NULL(clientContext);
jobject member = clientContext->memberCache.getCachedOrCreate(memberPtr, clientContext);
chatClient_.call<void>(onMemberAdded_, member);
}
вызывает джавоский листенер колбек при событии, например

Stanislav
30.06.2017
11:33:31
а вот дальше...
самый простой способ как оно там работает, сделать приложуху в креаторе и под андроид компильнуть

Andrii
30.06.2017
11:37:13
ну хорошо, а как дела с ios обстоят? там должно все полегче быть? или нет?

Berkus
30.06.2017
11:37:29
тоже то ещё развлечение

Arseny
30.06.2017
11:38:43
Если есть C интерфейс, то вообще никаких проблем.

Google

Stanislav
30.06.2017
11:38:46

Berkus
30.06.2017
11:39:21

Andrii
30.06.2017
11:43:47
хорошо, я примерно понял, спасибо за ответы)

Anatoly
30.06.2017
11:54:14

Дед Пегас
30.06.2017
12:00:57
@AlexRst вакансии к @AlexFails

Александр
30.06.2017
12:01:02

Дед Пегас
30.06.2017
12:01:10
@AlexRst Читайте правила чатов в шапке!

Alex
30.06.2017
12:01:27

Александр
30.06.2017
12:02:04

Anatoly
30.06.2017
12:06:35
http://blog.qt.io/blog/2013/07/23/anatomy-of-a-qt-5-for-android-application/

Berkus
30.06.2017
12:10:32
и давно objc умеет напрямую с++ либы вызывать?

Александр
30.06.2017
12:10:53
оборачиваешь в Qt и норм

Berkus
30.06.2017
12:11:01
нде
принести целый qt вместо того чтобы сделать тонкий бридж на objc++

Александр
30.06.2017
12:12:17
речь шла в контексте Qt, нет?