
Alexander
16.08.2018
13:21:52
кто-нибудь тестил новый препроцессор у vs 15.8?

Ilia
16.08.2018
13:22:08
при компиляции должен быть флаг -g, при сборке не должно быть -s.
Плюс к этому хорошо бы -O0

Stanislav
16.08.2018
13:22:50

Google

Ilia
16.08.2018
13:22:54

Anatoly
16.08.2018
13:25:18

Антон
16.08.2018
13:25:43
Если что, makefile не мой)

Yarique
16.08.2018
14:26:11
Если есть жирные std::tuple как контейнеры типов - он не может компилить
У меня есть constexpr std::tuple 290 размера
И он вообще не компилится
На 15.8
На 15.7.6 - всё норм
https://developercommunity.visualstudio.com/content/problem/296784/158-regression-fatal-error-c1060-compiler-is-out-o.html
Тоже ссылаются на боль с шаблонами в visual studio 15.8

Egor
16.08.2018
14:29:59
Thank you for your feedback! We have fixed the problem in an upcoming release 16.0 Preview 1. Thank you for helping us build a better Visual Studio!
ждём 16.0)

Google

Yarique
16.08.2018
14:32:15
Всем кто обновился советую откатиться
https://docs.microsoft.com/en-us/visualstudio/productinfo/installing-an-earlier-release-of-vs2017#installing-the-earlier-release

Stanislav
16.08.2018
14:33:17

Alex Фэils?︙
16.08.2018
14:36:28

Stanislav
16.08.2018
14:37:14

Alex Фэils?︙
16.08.2018
14:37:31
Да

Egor
16.08.2018
14:37:35
видимо выйдет после 1809 с новыми аби

Yarique
16.08.2018
14:37:39
Да, я не нашёл как установить 16.0 preview 1

Stanislav
16.08.2018
14:37:49
на след неделе видимо появится

Constantine
16.08.2018
14:40:40

Anatoly
16.08.2018
14:51:32

Yarique
16.08.2018
14:54:23
Если в новой версии не закроют - тогда зарепорчу.

Andrey
16.08.2018
15:46:07
Господа, загадка: чему равно foo<int>(1) если foo определена следующим образом
template <typename T>
constexpr int foo(int) { return 1; }
template <typename T>
constexpr int foo(T) { return 2; }
template <typename T>
constexpr int foo(decltype(T{})) { return 3; }
Подсказка: gcc (trunk), clang (trunk) и MSVC Pre 2018 считают разное.

Igor
16.08.2018
15:47:44
емнип, должно быть 1, вариант без вывода типа вроде должен быть приоритетнее вариантов с выводом

Andrey
16.08.2018
15:49:23

Igor
16.08.2018
15:51:03
ну я просто помню что при void foo(int); и template<class T> void foo(T); предпочтение должно отдаваться нешаблонной перегрузке; хз как оно в данном случае себя поведёт

Побитый
16.08.2018
16:57:36

Andrey
16.08.2018
16:58:49
У нас язык свободный :), такая точка зрения тожет имеет право на существование, так считает MSVC.

Kartonagnick
16.08.2018
17:00:15
я за ошибку компиляции: неоднозначность перегрузки

Andrey
16.08.2018
17:23:07
Но что интересно, MSVC говорит, что 2 кандидата одинаково хороши -- 1-й и 3-й, а 2-й им уступает.

Google

Alexander
16.08.2018
17:38:24

Constantine
16.08.2018
17:56:30

Alexandr
16.08.2018
18:29:17
Такой вопрос. Линуксы. Через fork, а потом execve, запускаем нужную нам прогу. Как потом у родителя получить потоки ввода/вывода (дескрипторы) у вызванной программы?

Hudd
16.08.2018
18:32:48

Alexandr
16.08.2018
18:32:53
@Artalus Andrey
Есть вариант посмотреть как реализован std::vector
Там для bool, как я слышал, другая реализация, нежели все остальное

Igor
16.08.2018
18:35:21
а что вектор? в векторе просто специализация общего template<class T, class Allocator> class vector; на конкретное template<class Allocator> class vector<bool>;
а тут в (int) версии шаблон T всё равно остаётся

Constantine
16.08.2018
18:36:50

Igor
16.08.2018
18:37:08
и & / && квалификаторов не хватает, да?)

Constantine
16.08.2018
18:37:15
это везде не хватает)
а вот noexcept-ов каких-то там нет
по сравнению с основной

Hudd
16.08.2018
18:38:36

Alexandr
16.08.2018
18:38:47
pipe()
https://www.opennet.ru/man.shtml?topic=pipe&category=2&russian=2
Вот в примере по этому системному вызову показано как из под ребёнка общаться с родителем, но у меня то ребёнком будет заменяться другим процессом

Kathu
16.08.2018
20:08:01

Alexey
16.08.2018
20:08:38
ну и стек, до кучи

Kathu
16.08.2018
20:09:15
придется изощряться, но так ты сможешь контролировать чтобы программа лишнего не потребляла
стек хз как

Google

Kathu
16.08.2018
20:10:26
напиши свой маллок для этого пула и через него память выделяй
почитай в интернете много примеров

Alexey
16.08.2018
20:10:39
пока самое вменяемое что позволяет посмотреть сколько оно жрет - это valgrind

Kathu
16.08.2018
20:10:55
чисто смотреть под линукс это valgrind
под винду вообще куча разных

Alexandr
16.08.2018
20:14:31

Kathu
16.08.2018
20:18:48
а зачем детач? сделай пул потоков и в io_service контролируй их завершение

Alexandr
16.08.2018
20:19:15
@Ioann_V
>но в потоке родителе содержать некий потокобезопасный контейнер
Все потоки владеют памятью в равных условиях, не стоит обосабливать на объект родителя и объект ребенка
Я понял что ты хочешь создать какой-то контейнер, который будет заполняться с разных потоков? Да, нужно использовать мьютексы в этом случае

Max
16.08.2018
20:19:25
Ещё можно запускать их через std::async, и на фючере спрашивать wait с нулевым таймаутом.

Kathu
16.08.2018
20:19:29
детач это ты их отправишь в асинхрон и только через содержимое потоков сможешь контролировать завершились они или нет

Max
16.08.2018
20:19:47
И детач совсем не нужен, да.

Kathu
16.08.2018
20:20:50
посоветуйте что почитать/посмотреть про архитектуру и проектирование своих распределенных баз данных?
там в самых первых главах есть прям на это пример с futures

Max
16.08.2018
20:22:54
auto future = std::async(std::launch::async, &func);
...
if (future.wait_for( std::chrono::seconds(0) ) == future_status::ready) {
// завершился.
}

Kathu
16.08.2018
20:23:02
и вообще там грамотно расписано с примерами как многопоточный код организовывать, многого и в интернете нет так грамотно описанного, например про shared_mutex-ы

Max
16.08.2018
20:24:03
+. Шикарная книга.
А если основной поток больше ничем не занимается, только ждёт, то и просто через join.
и? Они и будут одновременно. Вопрос в том, чем должен заниматься поток, их создавший. Если просто ждать их окончания, то join.

Kathu
16.08.2018
20:29:06
они и будут работать одновременно (на самом деле как ОС решит) а в join ты синхронизируешь точку в которой они все должны завершиться

Max
16.08.2018
20:30:43
да.

Google

Ioann V
16.08.2018
20:32:39
Thx

Andrey
16.08.2018
21:10:04

Alexander
16.08.2018
21:10:21

Andrey
16.08.2018
21:13:40
[temp.func.order] "Partial ordering of function templates"
Экспериментально, можно получить, такой порядок на фукнкциях (> значит более специализированная):
clang: 1 > (2 = 3)
msvc: (1 = 3) > 2
gcc: 3 > 1 > 2

Stanislav
16.08.2018
21:21:03

Valeriy
16.08.2018
22:08:29
на чем делать разметку лутчше visual studio ,suble text or brackets?

Alexander
16.08.2018
22:08:53

Friedrich
17.08.2018
01:20:03
std::make_unique<BYTE[]>(size); хм, так ведь нельзя делать? Неправильный деструктор вызовется.