@ProCxx

Страница 374 из 2477
Kirill
30.10.2016
13:30:31
Нафиг это надо? Компилятор/компоновщик все равно одинаковые реализации удалит, оставив одну.

с помощью нее можно так же ограничивать входные типы для шаблона
Ок, но вот вопрос: это мало известная техника, появившаяся в C++11. Как много программистов о ней знают, и умеют правильно использовать? А если кому-то придется поддерживать твой код?

Google
Kirill
30.10.2016
13:32:31
Для ограничения типов Саттер предлагал вводить классы ограничений

Rafael
30.10.2016
13:32:32
уже больше 5 лет прошло с момента их релиза

Kirill
30.10.2016
13:32:37
Но имхо это вообще не нужно

нуу, я думаю уже много кто на с++11 кодит
У меня для тебя плохая новость. Эту технологию даже Мейерс не описал в своей книге.

Rafael
30.10.2016
13:33:13
Для ограничения типов Саттер предлагал вводить классы ограничений
это защита от дурака обычно, чтобы другие прогеры не думали юзать какие-то классы

zk
30.10.2016
17:45:18
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного: Нужна поддержка foreach Переполнение в конструкторах Отсутствие деления Много копипасты *Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно **Стремные исключения Отсутствие документирующих комментариев что-то еще, но я забыл *) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие // test.cpp ... // A(m,N), B(N,m) Matrix<double> A(M,N); Matrix<double> B(N,M); ... A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m) ... catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый. **) Нужно вынести определения классов исключений в одну область видимости с Matrix<> Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике). Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}. Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли. Надоело писать... может позже

Rafael
30.10.2016
17:48:25
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного: Нужна поддержка foreach Переполнение в конструкторах Отсутствие деления Много копипасты *Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно **Стремные исключения Отсутствие документирующих комментариев что-то еще, но я забыл *) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие // test.cpp ... // A(m,N), B(N,m) Matrix<double> A(M,N); Matrix<double> B(N,M); ... A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m) ... catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый. **) Нужно вынести определения классов исключений в одну область видимости с Matrix<> Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике). Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}. Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли. Надоело писать... может позже
Вообще-то foreach уже есть

Alex Фэils?︙
30.10.2016
17:48:44
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного: Нужна поддержка foreach Переполнение в конструкторах Отсутствие деления Много копипасты *Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно **Стремные исключения Отсутствие документирующих комментариев что-то еще, но я забыл *) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие // test.cpp ... // A(m,N), B(N,m) Matrix<double> A(M,N); Matrix<double> B(N,M); ... A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m) ... catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый. **) Нужно вынести определения классов исключений в одну область видимости с Matrix<> Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике). Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}. Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли. Надоело писать... может позже
? ничего нового я не уаидел, но круто)

Вообще-то foreach уже есть
Надо iterator begin(), iterator end()

Я не помню, был ли он там

zk
30.10.2016
17:49:37
Нет

Google
Alex Фэils?︙
30.10.2016
17:53:27
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного: Нужна поддержка foreach Переполнение в конструкторах Отсутствие деления Много копипасты *Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно **Стремные исключения Отсутствие документирующих комментариев что-то еще, но я забыл *) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие // test.cpp ... // A(m,N), B(N,m) Matrix<double> A(M,N); Matrix<double> B(N,M); ... A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m) ... catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый. **) Нужно вынести определения классов исключений в одну область видимости с Matrix<> Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике). Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}. Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли. Надоело писать... может позже
@ned_ogl ?

zk
30.10.2016
17:55:59
@ned_ogl тебе наш Павлюченко очень сильно рекомендовал 81ю главу Чехрели

Андроид чмо, Павлюченко -> Ревьювер

Alex Фэils?︙
30.10.2016
17:57:48
Жесть автозамена

zk
30.10.2016
18:00:07
Она меня накаляет, но иногда нужна, приходится мириться



@ProgroBot

Alexey
30.10.2016
18:51:21
Любопытный бот

спасибо

Rafael
30.10.2016
18:54:56
А почему с D, а не с питоном?

Alex Фэils?︙
30.10.2016
18:54:56
Да. Тут был когда-то. Удалил, т.к. флуда много

Rafael
30.10.2016
18:57:41
Ну кажется в D есть gc

А значит нет того механизма работы с памятью как в плюсах

zk
30.10.2016
18:58:24
К чему это?

Rafael
30.10.2016
18:58:43
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного: Нужна поддержка foreach Переполнение в конструкторах Отсутствие деления Много копипасты *Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно **Стремные исключения Отсутствие документирующих комментариев что-то еще, но я забыл *) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие // test.cpp ... // A(m,N), B(N,m) Matrix<double> A(M,N); Matrix<double> B(N,M); ... A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m) ... catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый. **) Нужно вынести определения классов исключений в одну область видимости с Matrix<> Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике). Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}. Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли. Надоело писать... может позже
К вот этому

Ну тип там можно половину претензий выкинуть сразу тогда

zk
30.10.2016
19:01:26
Притензий столько сколько косяков, без всякого отношения к Ди

Ned Ogl
30.10.2016
20:08:20
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного: Нужна поддержка foreach Переполнение в конструкторах Отсутствие деления Много копипасты *Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно **Стремные исключения Отсутствие документирующих комментариев что-то еще, но я забыл *) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие // test.cpp ... // A(m,N), B(N,m) Matrix<double> A(M,N); Matrix<double> B(N,M); ... A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m) ... catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый. **) Нужно вынести определения классов исключений в одну область видимости с Matrix<> Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике). Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}. Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли. Надоело писать... может позже
Это хорошо, спасибо

Познакомь с чуваком с D

Google
Ned Ogl
30.10.2016
20:08:52
Я сам D начал и учу потихоньку

@CriOnsKry
30.10.2016
20:51:19
Я сам D начал и учу потихоньку
Ну всё, всё. Специалист, специалист. Мне уже кажется, что я недели две наблюдаю эту фразу.

Ned Ogl
30.10.2016
20:59:56
Ну всё, всё. Специалист, специалист. Мне уже кажется, что я недели две наблюдаю эту фразу.
странно, что не полгода, я на нём даже небольшую ОСь написал) она даже запускается и знает 2 команды, вот

совсем небольшую ОСь??

Fox
30.10.2016
21:02:24
кто такой павлюченко?
Да черт его знает

Ned Ogl
30.10.2016
21:02:39
ну мало ли препод какой-нить

Fox
30.10.2016
21:02:59
Возможно)

Ned Ogl
30.10.2016
21:11:07
Показал код Matrixlib типу из мира D (он с++ не может, только D и некоторые другие языки), он его отревьювил немного: Нужна поддержка foreach Переполнение в конструкторах Отсутствие деления Много копипасты *Стремные тесты, хотя нет - их отсутствие, а подобие - значит говно **Стремные исключения Отсутствие документирующих комментариев что-то еще, но я забыл *) Нужны Unit-тесты, те, что сейчас, попросту фейковые - одни перекрывают другие // test.cpp ... // A(m,N), B(N,m) Matrix<double> A(M,N); Matrix<double> B(N,M); ... A += B; // кидается исключение ExceptionWrongSizeAddition при неквадратной матрице т.к. A(m,N), B(N,m) ... catch(Matrix<int>::ExceptionSquareOperationForNonSquare) ... // Фейковый обработчик, хотя хуй там - два раза фейковый. **) Нужно вынести определения классов исключений в одну область видимости с Matrix<> Мы ведь не хотим написать так catch (Matrix<int>::ExceptionSquareOperationForNonSquare) {...} для Matrix<double> (так сейчас в нашем фейковом обработчике). Пользователь может захотеть ловить все исключения связанные с Matrix разом - catch(Exception) {...}. Оч-е-е-е-нь много копипасты, и даже шаблоны не спасли. Надоело писать... может позже
так, я просто в машине ехал. пожалуй, отвечу развёрнутее 1)про форич и не мечтайте. я сам пользовался им всего пару раз и нихера о нём не знаю, какое там, я из СТЛ используй дай Бог 1%. 2)деление - разбежались. там транспонирование не написано, а тебе обратную матрицу подавай. там даже определителя нет. всё будет, ждите. будет даже быстрое умное умножение 3)переполнение в конструкторах? щито? 4)копипаста - боль, но в угоду скорости. я бы не стал переписывать оператор вычитания через унарный минус и сумму, часто это замедляет дело. 5)тестов нет, даже претензий на тесты нет, тест.срр - это просто заглушка по типу статик ассерта. скомпилилось - комит - пуш. 6)исключения и вправду говно полное, я почитаю за них, поумнею на полкило, допишу нормальные исключения. СТЛные не предлагать. 7)документирующие комментарии - это прелесть D, в С++ есть доксиген и его я ещё не знаю. за критику огромное спасибо, спасибо что не поленился показать знающему челу. познакомь меня с ним, или замани его в @prodlang, и будет тебе третье спасибо

кстати, форич - тоже встроенная фишка D и реализовали её в СТЛ судя по всему "из зависти"

Ned Ogl
30.10.2016
21:19:23
А значит нет того механизма работы с памятью как в плюсах
механизм есть. там можно и с GC и без. можно выстрелить себе в ногу, только перед этим ты подписываешь бумагу о том, что снимаешь ответственность с компилятора за предоставленный дробовик)

Ned Ogl
30.10.2016
21:19:34
А не из js случайно?
а хз, кто старше, тому и плюшки

ovf
30.10.2016
21:29:36
а хз, кто старше, тому и плюшки
тогда какой-нибудь dolist в лиспе

Ned Ogl
30.10.2016
21:30:00
оо, а ты лиспер?

блин, всю жизнь было интересно, что это, и ни разу не дошли руки поглубже узнать

он щас используется вообще?

ovf
30.10.2016
21:34:41
всё используется кем-нибудь где-нибудь. промышленных программистов на лиспе я в своей жизни парочку видел, потом, скажем, scheme очень широко используется в cs, на clojure хипстеры что-то пишут

Ned Ogl
30.10.2016
21:35:08
ахаха

Alex Фэils?︙
30.10.2016
21:37:29
так, я просто в машине ехал. пожалуй, отвечу развёрнутее 1)про форич и не мечтайте. я сам пользовался им всего пару раз и нихера о нём не знаю, какое там, я из СТЛ используй дай Бог 1%. 2)деление - разбежались. там транспонирование не написано, а тебе обратную матрицу подавай. там даже определителя нет. всё будет, ждите. будет даже быстрое умное умножение 3)переполнение в конструкторах? щито? 4)копипаста - боль, но в угоду скорости. я бы не стал переписывать оператор вычитания через унарный минус и сумму, часто это замедляет дело. 5)тестов нет, даже претензий на тесты нет, тест.срр - это просто заглушка по типу статик ассерта. скомпилилось - комит - пуш. 6)исключения и вправду говно полное, я почитаю за них, поумнею на полкило, допишу нормальные исключения. СТЛные не предлагать. 7)документирующие комментарии - это прелесть D, в С++ есть доксиген и его я ещё не знаю. за критику огромное спасибо, спасибо что не поленился показать знающему челу. познакомь меня с ним, или замани его в @prodlang, и будет тебе третье спасибо
1) Это имеось в виду for (auto elem: aray) {} - PR кину

Google
Ned Ogl
30.10.2016
21:37:58
а, длял этого итераторы нужны кажись

Admin
ERROR: S client not available

Alex Фэils?︙
30.10.2016
21:38:09
так, я просто в машине ехал. пожалуй, отвечу развёрнутее 1)про форич и не мечтайте. я сам пользовался им всего пару раз и нихера о нём не знаю, какое там, я из СТЛ используй дай Бог 1%. 2)деление - разбежались. там транспонирование не написано, а тебе обратную матрицу подавай. там даже определителя нет. всё будет, ждите. будет даже быстрое умное умножение 3)переполнение в конструкторах? щито? 4)копипаста - боль, но в угоду скорости. я бы не стал переписывать оператор вычитания через унарный минус и сумму, часто это замедляет дело. 5)тестов нет, даже претензий на тесты нет, тест.срр - это просто заглушка по типу статик ассерта. скомпилилось - комит - пуш. 6)исключения и вправду говно полное, я почитаю за них, поумнею на полкило, допишу нормальные исключения. СТЛные не предлагать. 7)документирующие комментарии - это прелесть D, в С++ есть доксиген и его я ещё не знаю. за критику огромное спасибо, спасибо что не поленился показать знающему челу. познакомь меня с ним, или замани его в @prodlang, и будет тебе третье спасибо
3) имелось в виду целочисленные переполнеия и или потеря точности

Begin(), end()

Ned Ogl
30.10.2016
21:38:29
с другой стороны непонятно, как можно по матрице вот так линейно бегать фором?

матрица - это прямоугольник

по ней бегают с 2мя координатами

Vladislav
30.10.2016
21:38:48
а, длял этого итераторы нужны кажись
ты можешь расширить свои row/const_row до итераторов (правда по строкам все равно придется делать свои)

Detur
30.10.2016
21:39:20
матрица - это прямоугольник
в памяти один хрен одной сосиской лежит

Ned Ogl
30.10.2016
21:39:40
бесспорно, но у меня нет чего-либо чтобы пробежаться по ней линейно

Detur
30.10.2016
21:40:10
ну по двумерному массиву можно бегать линейно же

Ned Ogl
30.10.2016
21:40:10
кроме как A(0, 1) ... A(0, rows*cols)

можно кнешн) но тут бедняге придётся извращаться) первая координата по факту номер строки, вторая - оффсет) если номер обнулить и бегать оффсетом, можно пробежать её линейно. но надо ли?

это всё-таки не вектор...

Detur
30.10.2016
21:41:57
можно тупо указатель инкрементировать

Ned Ogl
30.10.2016
21:42:06
я плохо представляю себе задачу, когда это нужно*

Vladislav
30.10.2016
21:42:31
логичнее чтобы итерация по матрице итерировала строки, а не элементы. А строки уже пусть итерируются по элементам

Ned Ogl
30.10.2016
21:42:44
забить значениями разве только, но для этого будет соотв. конструктор.

я еси честно не умею в итераторы(

Google
Ned Ogl
30.10.2016
21:43:01
я даже плохо понимаю, как они изнутри работают

честно гря использовал дважды

тогда же когда и foreach?

3) имелось в виду целочисленные переполнеия и или потеря точности
предлагается цикл инициализации разбить на 2? эт можно.

справедливое замечание

Ned Ogl
30.10.2016
22:47:42
господа, а надо ли расставлять noexcept, и зачем оно?

Stanislav
30.10.2016
22:53:13
https://habrahabr.ru/post/164221/

Alex Фэils?︙
30.10.2016
22:59:19
https://habrahabr.ru/post/164221/
О, автор этой статьи на конфе яндекса рассказывал про стандартизацию

Страница 374 из 2477