Anatoly
translation unit есть, конечно
Anatoly
кстати, и separate compilation, see compilation, separate separate translation, see compilation, separate тоже есть
Anatoly
5 Lexical conventions [lex] 5.1 Separate translation [lex.separate] 1 The text of the program is kept in units called source files in this International Standard. A source file together with all the headers (20.5.1.2) and source files included (19.2) via the preprocessing directive #include, less any source lines skipped by any of the conditional inclusion (19.1) preprocessing directives, is called a translation unit. [ Note: A C++ program need not all be translated at the same time. —end note ] 2 [ Note: Previously translated translation units and instantiation units can be preserved individually or in libraries. The separate translation units of a program communicate (6.5) by (for example) calls to functions whose identifiers have external linkage, manipulation of objects whose identifiers have external linkage, or manipulation of data files. Translation units can be separately translated and then later linked to produce an executable program (6.5). —end note ]
Ioann_
Верно ли я понимаю, что с С++17, copy elision - стал обязательным требованием ?
Alexander "SonnySlave"
Гарантированный copy elision
Alexander "SonnySlave"
+
Ioann_
Тада норм, можно спать спокойно
Ioann_
/shrug
FailsBot
/shrug
¯\_(ツ)_/¯
Berkus
не обязательно https://github.com/vslavik/winsparkle/blob/57aef82203d82a322fc3dddb9eee81c790c5fc64/src/appcast.h#L84
Berkus
у тебя есть полные сорцы либы
🦥Alex Fails
Жизнь - боль
мы cotire принесли
Berkus
мы cotire принесли
только пользы от него маловато, для девелопмента pch зло
Constantine
только пользы от него маловато, для девелопмента pch зло
не зло, просто в pch надо пихать то, что НЕ МЕНЯЕТСЯ
Berkus
вот вот а у гражданина престона нахуячено туда всего
Berkus
это типа такой тул чтобы #include в исходниках не писать, поэтому хуйнем туда ВСЁ
Constantine
а потом я задолбался перекомпилировать все
Berkus
/tmp/webkitgtk-20171225-46362-1s1qi2u/webkitgtk-2.18.4/Source/WTF/wtf/threads/Signals.cpp:33:10: fatal error: 'MachExceptionsServer.h' file not found #include "MachExceptionsServer.h" ^~~~~~~~~~~~~~~~~~~~~~~~ ска реально WTF
🦥Alex Fails
Alexander "SonnySlave"
Unity build
говно
Alexander "SonnySlave"
менять кучу исходников для того, чтобы компилилось быстро - такое себе решение. к тому же менять надо очень аккуратно
Alexander "SonnySlave"
Там кто-то Варгейминга читал пару раз доклад на эту тему (Лапицкий, кажется). И что-то меня этот способ не вдохновил ни разу
Roman
Интересно, а при unity build получается более оптимальный бинарник?
Roman
Или LTO умеет делать все те же оптимизации что и обычный компилятор
Иван
Докладчик сказал, что они разницы времени исполнения не заметили.
Alexander "SonnySlave"
Но включение lto ресурсов жрёт как не в себя. Это тоже стоит учитывать
Roman
Ну релиз билд ты делаешь очень редко, так что не жалко
Roman
Что-нибудь известно про переход boost на cmake? Когда официальные модули появятся?
Alexander "SonnySlave"
процесс идёт
Alexander "SonnySlave"
не успел
Ioann_
О, мув итератор прикольная штука :)
Ioann_
Ребят, подскажите пожалуйста, как грамотно форвард декларировать класс енам
Ioann_
Если он находится, в другом классе, который я также хотел бы где-то дальше подключить, в cpp
Roman
google говорит что нельзя. update: wrong
Ioann_
А что значит update wrong ?
Roman
А нет, похоже все-таки нельзя : https://stackoverflow.com/questions/1021793/how-do-i-forward-declare-an-inner-class
Aidar
значит мржно
Aidar
в котором он
Aidar
а потом гдето дефайнишь
Ioann_
Капец. Нахрена тогда было давать возможность форвардить. Имхо, тут либо придется делать не enum class, а просто enum
Roman
forward декларации вообще костыль
Ioann_
Я так и думал, надо было делать сразу в Pimpl
Aidar
Ioann_
Это как ?
Roman
Любопытно что некоторые компиляторы при этом позводяют использовать недоопределенные типы
V.
#Братья и сестр.... звиняйте :) Кто нить знает есть ли в стандартной либе что то что б узнать расстояние в байтах/символах в одной строке (массиве чаров) между двумя символами по указателям символа "от" и "до" или все же писать?
Anatoly
Roman
например что-нибудь вроде: struct foo { std::vector <foo> foo_vec; ... }
Roman
incompleted на здоровье, но они должны быть объявлены
ну насколько я понимаю по стандарту нельзя так писать. Но gcc съедает
Roman
есть альтернатива?
двухпроходная компиляция )
Anatoly
а там и раздельной компиляции нет
Roman
Т.е. когда тип A определен через тип B, а B через A
Constantine
И еще в 100 местах
Roman
Посоветуйте имя: как назвать view и функцию возвращающую view, которое превращает переменную integral типа в битовый вектор? Пример использования для пояснения : int x = 0; bitvectorize(x) (2,1) = 3; // x [2:1] = 3 std::cout << x; >> 6 Хочу PR сделать в SystemC . Очень не хватает чего-то подобного
Roman
vectorize вроде как плохое название, т.к. сразу ассоциация с std::vector
Roman
Хм.. может тупо bits? Короткое имя, удобно будет вызывать: bitvec_view bits ( T& integral_val )
Ender
std::distance
Очень специфический совет. Оно считает айтемы между итераторами.
Ender
std::distance
https://stackoverflow.com/questions/26292652/how-to-understand-stddistance-in-c легкий способ выстрелить себе в ногу.
Roman
toBits же
наверное функция вообще не нужна. достаточно просто конструктора
Ender
Зачем тебе 10 конструкторов?
Ender
Я так и не понял. Ты оборачиваешь инт что-ли?
Roman
Нет, любой integral тип
Ender
А
Roman
для которого разумна идея побитовых операций