Aidar
Tidy более жесткий
Aidar
Там вплоть до кодстайла чекается
Surreal
http://www.mariobadr.com/using-clang-tidy-with-cmake-36.html
Aidar
tidy еще исправлять умеет
Cuno
Это же разное...
Не вижу существенной разницы. noexcept - функция не бросает исключений, иначе std::terminate. -fno-exceptions - никакая функция в компилируемом коде не кидает исключений, иначе std::terminate.
Cuno
Спасибо, гуглить я умею. Несмотря на то, что там написано "the behavior is quite different when you use -fno-exceptions and when you mark the function as noexcept", я в упор не вижу разницы (разве что в одном случае код с throw скомпилируется, а в другом - нет, но разве это существенно?).
Cuno
Так где же разница в поведении? Даже если библиотека кинет исключение, то и в том, и в другом случае я получу std::terminate.
✙ Fatum ✙
ребят, кто знает, почему std::regex expr("[0-9]+"); бросается ексепшенами
✙ Fatum ✙
уже пробовала и "\\d+"
Anonymous
может проблема не в регулярке?
Anonymous
вроде с ней всё норм
✙ Fatum ✙
и "\\d" - одно и то же
✙ Fatum ✙
точнее, бросается ексепшеном
Square
✙ Fatum ✙
✙ Fatum ✙
regex_error
Vladislav
может что-то память регэкспа попортило?
Anonymous
тогда валгриндом погулять?
Vladislav
если gcc/clang, я бы с включенным asan скомпилировал и позапускал
Square
Местами вверх/вниз с чем нить
Cuno
Проблема точно не в regex'e
Square
Барьеры расставить
✙ Fatum ✙
Vladislav
да
точно memory corruption
✙ Fatum ✙
точно memory corruption
интересно, где это оно могло покораптиться, если я эту переменную только инициализирую на этой строке
Vladislav
Square
Vladislav
мог испортиться сам строковый литерал, например)
✙ Fatum ✙
Evgenii
В обратном порядке, не? Валгринд больше ловит и дальше работает
✙ Fatum ✙
кстати, спасибо за совет с СЛион - дебажить стало намного удобнее
Evgenii
У меня наоборот
Evgenii
Вместе не вижу смысла, обычно компилирую с asan, если не работает, загоняю в valgrind
Vladislav
нет
Cuno
Есть UB при попытке их изменить (const жеж). Гарантии segfault'a, естественно, нет, но на практике компилятор всегда помещает их в .rodata сегмент, который мапится как read-only.
Cuno
UB не стоит понимать буквально, в большинстве случаев поведение на конкретной платформе с конкретным компилятором достаточно определенное.
Evgenii
Ну любое неопределенное поведение в итоге как-то определено
Cuno
Разработчики компиляторов адекватные люди.
Evgenii
Ну гарантий нет, но если стоит rand%42 уже 8 версий и никто код не трогает, то это вполне определенно)
Cuno
если
Cuno
Я говорю о том, что такой код:
'''
int* x = nullptr;
*x = 123;
'''
скомпилированный череез g++\clang на x86(-64) под линуксом гарантированно дает segfault хоть это и UB. Ядерные ракеты такой код (внезапно!) не запустит.
Cuno
не те 'кавычки' -_-
🐙 Antony
🐙 Antony
Ещё хуже... Современные компиляторы оптимизируют основвываясь на UB. Если код с UB работает на gcc-6.2, то на gcc-6.3 могут добавить оптимизацию и код работать перестанет.
🐙 Antony
Да, я из него черпал инфу :)
Cuno
Evgenii
Речь с самого начала шла о таких ограниченниях
Evgenii
UB не стоит понимать буквально, в большинстве случаев поведение на конкретной платформе с конкретным компилятором достаточно определенное.
🦥Alex Fails
Внезапно этот код работает если вы пишите под BIOS
Да в любом месте, где разрешена запись в нулевой адрес. Где-т тут на днях была статья про фишку ядра линя, связанную с тем, что где-то нуллптр был writable, а разрабы в некоторых местах писали в него с надеждой, что писать туда нельзя ( т.е., для падения ядра)
🦥Alex Fails
Хз, мб ща найду
Sokolov
#include <iostream>
int main (){
std::cout << "Hello World!";
return 0;
}
Sokolov
/tmp/ccea35T1.o: In function `main':
learn.cpp:(.text+0xa): undefined reference to `std::cout'
learn.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/ccea35T1.o: In function `__static_initialization_and_destruction_0(int, int)':
learn.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
learn.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status
Sokolov
Вот почему, нльзя сесть спокойно ипо урокам делать??
Sokolov
Мне дали ссылку на уроки learncpp.com
Sokolov
Вот написал как там написано и вот что.
Sokolov
Подскажите плиз чо за фигня.
Алдар
это уже С++, там компилятор С?
Sokolov
Ну я делаю gcc file.cpp
Nikita
Sokolov
Sokolov
Извиняюсь за тупость.
Anonymous
Парни, есть какие-нибудь каналы в телеграме по C++?
Alexander
Уже вот тут
Alexander
Добро пожаловать
Anonymous
> каналы
Anonymous
🙈
Alexander
А, в глаза долблюсь, бывает )
🦥Alex Fails
🦥Alex Fails
также по новостям туда можно мне в лс писать
Alexander
А по Qt есть какие-нибудь живые чаты и каналы?
Язык не важен, лишь бы поговорить можно было.
🦥Alex Fails
тут можно. и в супапро. отдельных чатов не видел, но можно создать, если будет народ
Sergey
да можно и сюда я думаю
Sergey
тут кутешников много, я один из них
Sergey
алсо вот, ребят. вспомнил. поставил сегодня на пробу resharper - плагин для V2013. прогнал его на одном проекте. и он выдал такое странное предупреждение. суть в следующем
Sergey
class C
{
public:
C()
{
val |= some_bitmask; // warning - value may be unitialized
}
int val = 0;
}
Sergey
ну примерно так
Sergey
мне казалось - если с C++11-style что-то инициализируется, то в теле конструктора оно уже присвоено, разве нет?