
Ilia
14.08.2018
11:53:15

Andrey
14.08.2018
11:56:23

Евгений
14.08.2018
11:57:00
шобы нинаследоваться

Andrey
14.08.2018
12:00:26

Google

Евгений
14.08.2018
12:01:39
Вместо наследования для расширения функциональности просто определяем метод, и вот мы расширили класс

Andrey
14.08.2018
12:21:48

Ilia
14.08.2018
12:24:19

Andrey
14.08.2018
12:24:45

Ilia
14.08.2018
12:25:12

Roman
14.08.2018
12:26:30
про 2) типичный пример с итераторами : x.begin vs begin(x)

Andrey
14.08.2018
12:27:02
за счет того, что std::apply вызывает внутри себя std::invoke все прекрасно работает

Ilia
14.08.2018
12:27:53
std::invoke решает эту проблему
Но идея проползла Страустрап была и в том, что member functions и free functions выходят на один уровень друг с другом, с только той разницей, что у member первый параметр обязательный и this.

Stanislav
14.08.2018
12:28:53

Andrey
14.08.2018
12:29:09

Ilia
14.08.2018
12:29:11

Google

Ilia
14.08.2018
12:29:53

Roman
14.08.2018
12:32:27
Хороший вопрос нужны ли extension методы для встроенных типов..

Andrey
14.08.2018
12:32:54

Roman
14.08.2018
12:33:13
5.times([]{ cout « "hello\n"; })

Соломончик
14.08.2018
12:34:00
Ребят, оффтоп
Кто-то знает как посмотреть размер стека? Может есть какая-то функция для этого?
В вижуалке

Roman
14.08.2018
12:34:27
можно сразу добавить синтаксический сахар как в kotlin , чтобы если последний параметр std::function, то можно сразу писать тело лямды
5.times { cout << "hi"; }

Stanislav
14.08.2018
12:34:42

Roman
14.08.2018
12:35:04

Andrey
14.08.2018
12:42:05
5.times([]{ cout « "hello\n"; })
Пользуйтей уже сейчас:
struct Invoker {
const size_t count;
template<typename F>
void operator() (F f) {
for (int i = 0; i != count; ++i)
f();
}
};
Invoker operator "" _times(long double x) {
return { static_cast<size_t>(x) };
}
void test() {
using std::cout;
5._times([]{ cout << "hello\n"; });
}

Roman
14.08.2018
12:43:00
круто, пойду попробую

Юра Незнанов
14.08.2018
12:43:37
что будет если в заголовке екзешника указана неправильная контрольная сумма?
он запустится?

Andrey
14.08.2018
12:43:49

Igor
14.08.2018
12:44:11

Andrey
14.08.2018
12:45:44

Дед Пегас
14.08.2018
12:45:52

Google

Дед Пегас
14.08.2018
12:49:51
Только без рекламы, пожалуйста.

Roman
14.08.2018
12:55:36

Andrey
14.08.2018
12:59:45

Roman
14.08.2018
13:00:23
ну наверное

Stanislav
14.08.2018
13:02:53

Constantine
14.08.2018
13:33:30

Дед Пегас
14.08.2018
13:34:11

Constantine
14.08.2018
13:35:22

Дед Пегас
14.08.2018
13:35:59
Вот кстати, 2_times.call([]{ cout << "1\n"; }); не выйдет, придётся таки завернуть в скобки.

Constantine
14.08.2018
13:36:04

Дед Пегас
14.08.2018
13:36:20

Constantine
14.08.2018
13:36:30

Дед Пегас
14.08.2018
13:36:38
Коньцепт

Constantine
14.08.2018
13:38:26
Коньцепт
Слышь, а когда разрешили auto параметры функции?

Дед Пегас
14.08.2018
13:38:38

Constantine
14.08.2018
13:38:59
Я уже судорожно пошел перелопачивать cppref

Дед Пегас
14.08.2018
13:39:11
Просто gcc кидает только ворнинг, а шланг ошибку.

Egor
14.08.2018
13:39:11
только возвращаемое значение

Constantine
14.08.2018
13:40:01

Stanislav
14.08.2018
13:49:14
ну в гцц концепты давненько

Google

Oleg
14.08.2018
13:59:05
плюсач
можно ли замутить такую штуку:
template <T, U> class A: public T
{
U GetVar() { T::GetVar(); }
}
class B
{
int GetVar();
}
A<B, int> *a = new A<B, int>()

Alexander
14.08.2018
14:11:16

Stanislav
14.08.2018
14:12:11

Alexander
14.08.2018
14:12:45
https://github.com/saarraz/clang-concepts

Igor
14.08.2018
14:20:56

Andrey
14.08.2018
14:50:04

Constantine
14.08.2018
14:55:42

Дед Пегас
14.08.2018
15:28:30

Constantine
14.08.2018
15:31:05

Andrey
14.08.2018
15:33:12

Ignat
14.08.2018
15:33:33
за таким в скалку

Constantine
14.08.2018
15:33:44

Дед Пегас
14.08.2018
15:34:07
Отличная же.

Constantine
14.08.2018
15:34:25

Дед Пегас
14.08.2018
15:34:34
Ну уж прямо.

Andrey
14.08.2018
15:34:54

Constantine
14.08.2018
15:34:55
Ну уж прямо.
Хм.. ну вот глубокое ИМХО это целенаправленное подключение ADL по name
Т.е. цель замена name lookup с qualified на unqualified

Google

Constantine
14.08.2018
15:36:34
т.е. это указание, что за using идет extension point

Andrey
14.08.2018
15:37:23

Constantine
14.08.2018
15:39:19
Т.е. в действительности там почти что неустранимые проблемы

Andrey
14.08.2018
15:40:23

Constantine
14.08.2018
15:40:49
я как минимум вспомню две именованные сущности в C++, которые просто не имеют типа
это { bracket-init } и overloaded_function
и обе эти сущности не могут пройти через perfect forwarding
т.к. их интерепретация попросту зависит от целевого типа и он не может быть auto
какие именно?
скажем так, я немного размышлял и у меня получался, что без специального декларатора невозможно решить все проблемы customization point
где декларатор должен изменять правила name lookup для этого имени

Andrey
14.08.2018
15:46:07

Constantine
14.08.2018
15:46:31

Andrey
14.08.2018
15:51:15