Pavel
вот такой код: https://godbolt.org/g/5nhUVf
почему при компиляции удаляется строка с if() ?
Причем, если просто сравнивать с результатом constexpr - все нормально, при испольовании какой-либо математики типа & | - код с if() удаляется.
у gcc 7.2 и clang-4.0 поведение одинаковое.
Pavel
если вызывать какую-либо внешнюю функцию, у которой аргументы constexpr - все хорошо, если static или inline - код так же удаляется
Anonymous
Pavel
нет. не будет. там есть внешняя переменная, значение которой на этапе компиляции не определено.
Nikita
Anonymous
Pavel
ок, можно изменить на адекватные значения, результат будет тот же.
Ioann_
замените, поглядим
Egor
Pavel
кстати, да, если ставить правильные числа, то все ок.
Berkus
Оптимизатор — молодец!
Pavel
я не ожидал, что сейчас даже такое просчитывается.
🦥Alex Fails
да блин, это же всего лишь битовая операция, которая могла считаться на этапе компиляции еще в pre-C++11
Berkus
Berkus
где ты был все эти годы?
Pavel
на ARM. и без использования constexpr.
Berkus
а, опять древние гцц от codesourcery
Berkus
писали б под арм на современном шланге было бы проще
B
возможно ли на x86_64 кросскомпайлить cmake проект под arm какой-нибудь?
Berkus
B
есть пример или гайд?
Berkus
ммм... несколько тысяч, тебе что именно непонятно?
Berkus
берешь тулчейн файл, прописываешь туда кросс-компилятор, собираешь
Berkus
есть пример или гайд?
https://github.com/metta-systems/metta/blob/develop/src/cmake/cross.toolchain выглядит примерно так
Alexander "SonnySlave"
Alexander "SonnySlave"
сколько ему? лет 7?
Alexander "SonnySlave"
longterm: 3.16.51 2017-11-26
Berkus
Berkus
есть пример или гайд?
https://github.com/metta-systems/metta/blob/develop/src/buildit.sh как вызывать cmake
B
найс, спасибо
Pavel
ну так свежий gcc (7) оно не поддерживает. Там даже gcc-5 надо впиливать: нету compiler-gcc5.h
Berkus
Dr. Friedrich
👍
Alexander "SonnySlave"
🦥Alex Fails
завязки на GCC extensions
Vladislav
Vladislav
бэкпортни https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71458cfc782eafe4b27656e078d379a34e472adf
Pavel
ну до этого я догадался... 🙂
Anonymous
помогите =) почему последнее слово файла дублируется? как избежать?
ifstream file1("file.txt");
while (file1) {
file1 >> buf;
if (buf.length() > max_word.length()) {
max_word = buf;
}
tmp_word += buf + " ";
// cout << buf << endl;
}
Anonymous
если getline юзать то все ок, но интересует именно чтение из потока по 1 слову
Anonymous
Anonymous
так и в чем мб проблема?
Anonymous
В сетапе
Anonymous
в сетапе чего?
Oleg
Berkus
Anatoly
в сетапе чего?
твоя проблема в том, что ты не проверяешь успех чтения
ifstream file1("file.txt");
while (file1) {
if( file1 >> buf ) {
if (buf.length() > max_word.length()) {
max_word = buf;
}
tmp_word += buf + " ";
// cout << buf << endl;
}
}
Anonymous
пока не дошел до проверки наличия файла, тут не в этом ошибка, while (file » buf) работает
Anatoly
а, вообще, твои задачи уже решены стандартной библиотекой:
auto it = std::max_element(std::istream_iterator<std::string>(std::cin), std::istream_iterator<std::string>(), [](auto&& a, auto&& b){
return a.size() < b.size();
});
if( it != std::istream_iterator<std::string>() ) {
std::cout << *it << ": " << it->size();
}
Anonymous
а можете объяснить почему этот вариант работает а мой нет?
Anonymous
кхм ок, мне казалось если указатель на конце файла должно что-то типа false вернуть в любом случае
Berkus
Anonymous
о, спасибо, теперь понятно
Anonymous
Berkus
Anonymous
А, извините. Он же тут же в цикле строки сцепляет, не заметил.
Anatoly
Anonymous
Aidar
Aidar
а туда eof не входит
Aidar
.eof() чекайте
Em Lee
Всем привет ребята )
🦥Alex Fails
прив
Em Lee
подкиньте статью интересную по c++ если можно
Egor
https://miyuki.github.io/2016/10/21/std-launder.html
Egor
Но это скорее хардкор, который особо не нужен.
Anonymous