Constantine
просто слово inline изначально означало просьбу сделать что-то и её последствие для линковщика
Constantine
просьбу что-то сделать компилятор может игнорировать
Nikita
Constantine
последствие для линковщика и есть значение слова inline
Nikita
просто смысл который я написал был почерпнут у страуструпа помоему
Nikita
и очень прочно засел в голове
Constantine
есть __forceinline, обычно означает что-то вроде "варнинг если не инлайнится"
Anonymous
бля
Constantine
в любом случае, к С++17 решили, что нужно считать слово "inline" именно словом для линковщика
Constantine
и добавили inline переменные
Nikita
Nikita
понял
Nikita
спасибо
Constantine
понял
вы должны были задать вопрос, почему constexpr
Nikita
потому что видимо для constexpr его писать не нужно, такие функции должны быть и так в h?
Constantine
(правильный ответ: потому что constexpr сразу подразумевает inline)
Nikita
so close))
Constantine
а, еще не нужно писать в случае
struct some {
int f() {}
};
Constantine
если member function реализован в определении класса, он тоже inline сразу
Constantine
?
Nikita
и inline в том же смысле в каком и свободная функция да?
Constantine
при этом линковщик НИЧЕГО НЕ ОБЕЩАЕТ В РАМКАХ ПРОВЕРОК
Constantine
в частности, не реализовать inline функцию это нестабильный CE
Nikita
1. шо цэ такэ СЕ
2. есть ли гарантия что код заведётся?
Constantine
//some.h
struct some {
int f();
};
//some.cpp
inline int some::f() {
}
//other.cpp
int main() {
some s;
s.f(); //может скомпилируется, может нет
}
Constantine
CE это JAVA для compilation error
Nikita
Nikita
а
Nikita
вот даже так
Constantine
и да, пример выше вне рамок other.cpp полностью корректен - inline для функции-члена класса может быть указан при реализации без указания в объявлении
Constantine
но это тонкости
Nikita
т.е. можно сделать вывод, что код, приведённый выше это что то вроде compile-time UB и так писать не следует?
Nikita
ну или link-time
Nikita
не суть
Constantine
скажем так, нужны какие-то серьезные мотивы так делать
Constantine
это ill formed, no diagnosis is required
Constantine
как и в случае ODR violation
Constantine
т.е. программа некорректна, но компилятор не обязан это проверять
Nikita
спасибо
Nikita
и стало быть для шаблонных функций inline смысла не имеет?
Nikita
и смысл будет как у нешаблонной функции?
Anatoly
Nikita
пасиб)
Nikita
ребят, а в cmake нельзя как нибудь задать параметры линковки для конкретной цели во время вызова cmake?
Anatoly
ed
std::vector.pop_back() - вызывает деструктор элемента?
Liubomyr ✙
http://www.cplusplus.com/reference/vector/vector/pop_back/
Nikita
посмотри set_target_properties для LINK_FLAGS
спасибо, но я не это имел в виду
эта команда используется внутри CMakeLists, а я имел в виду указать параметры во время вызова cmake, как например -DCMAKE_CXX_FLAGS="...
надобность уже отпала, но на будущее было бы полезно узнать
Angelina
Всем привет! Не могли бы посоветовать хороший курс по c++?
Danil
ed
http://www.cplusplus.com/reference/vector/vector/pop_back/
Да я б не стал писать если бы не смущала формулировка..
Во первых все мы знаем что элемент не куда не девается на самом деле (кол-во занятой памяти не уменьшается), и там просто уменьшается переменная занятых элементов..
Но вопрос не в этом, делается ли там вот так - data[x].~Type(); или нет?
Посмотрел бы в исходниках, но лезть далеко..
Danil
Anatoly
Constantine
ed
Окей, спасибо.
Constantine
Constantine
В one love MSVS это делается очень быстро
Nikita
читать сорцы stl такое себе занятие
Constantine
Constantine
нет ни одной причины не читать сорсы стл
Nikita
убогие имена?
Constantine
что не так в именах?
Nikita
______________________________________________-
Constantine
потому что для резервированных имен они должны использовать _A или __ ?
Nikita
такое ощущение что чем больше подчёркиваний тем лучше
Nikita
Ostap ꑭ
__M_instance.__method_name()
Constantine
Nikita
никогда себя таковым не называл
Constantine
Что тут вообще непонятного
Nikita
orphan_range мне лично непонятен
Constantine
Constantine
штука для отладочной проверки итераторов
Constantine
мне вот первое, что бросилось в глаза - а зачем проверяется, что идет внутреннее перемещение элемента?
Nikita
это где