
Ilia
14.09.2018
19:12:51

Дмитрий
14.09.2018
19:13:23
А то class::f< не так парсит

Igor
14.09.2018
19:13:35
Что значит weak symbol?
https://en.wikipedia.org/wiki/Weak_symbol символ который можно подменить другим при линковке.

Дмитрий
14.09.2018
19:14:05

Google

Ilia
14.09.2018
20:49:17
UB. Функция объявлена как не void, но не возвращает значение.

Sergey
14.09.2018
20:58:33
Есть вопрос спецам STL
std::pair - это простой темплэйт структуры
template ...
struct pair { .... _Ty1 first; _Ty2 second; };
если я делаю так:
std::pair<int,char[5]> x{1,{'k','u'}};
имеем
error C2440: 'initializing': cannot convert from 'initializer list' to 'std::pair<int,char [5]>'
делаю простой тест:
struct S {
int a;
char b[5];
};
S x {1,{'k','u'}};
всё ок!
Кто может объяснить в чём проблема?

Stanislav
14.09.2018
20:59:58

Sergey
14.09.2018
21:04:04
VS2017 вот код , можно прям вставить в пустой файл и компильнуть
———————
#include <map>
struct S {
int a;
char b[5];
};
S x1 {1,{'k','u'}};
std::pair<int,char[5]> x2 {1,{'k','u'}};
———————
gcc даёт то же самое:
error: no matching function for call to ‘std::pair<int, char [5]>::pair(<brace-enclosed initializer list>)’

Denis
14.09.2018
21:10:09
потому что в твоей структуре нет конструктора, а в пейре - есть

Sergey
14.09.2018
21:18:44
И точно, проверил, так и есть!
Т.е. наличие конструктора запрещает стандартную С-style инициализацию? Только чепез конструктор?
Круто, сенкс.
Тогда след вопрос. Как мне сделать чтоб pair, у которого second это char[] хавал любые строки
что то типа
char* s = "kuku";
std::pair<int,char[5]> x2 (1,s);
как добиться чего-то похожего?

Побитый
14.09.2018
21:30:36

Sergey
14.09.2018
21:31:09
это понятно. Но это не принимается. Есть char[]

Побитый
14.09.2018
21:42:56

Vladimir
14.09.2018
21:47:30
Правильно надо паир написать
Std::pair<int, char*> x2(1, s)

Sergey
14.09.2018
21:48:03
не - это не годится, мне нужно место под строку где то салоцировать

Google

Sergey
14.09.2018
21:48:15
короче решение такое:
struct my_pair : std::pair<int,char[5]>
{
my_pair(int key, char* str)
{
first = key;
memcpy(second, str, 5);
}
}

Alexander
14.09.2018
21:48:47

Sergey
14.09.2018
21:49:20
только что проверил

Vladimir
14.09.2018
21:49:25
Ппц
Так не надо делать!

Побитый
14.09.2018
21:52:20

Sergey
14.09.2018
21:52:23
что же в этом криминального?
есть требование на char - не обсуждается

Побитый
14.09.2018
21:52:50
Делай string и не парь мозги
А в твоём примере представь, что пришла строка с размером меньше 5...

Alexander
14.09.2018
21:53:11
ничего плохого в таком коде не вижу. По крайней мере админка чата единогласно одобряет

Vitaly
14.09.2018
21:54:48

Sergey
14.09.2018
22:01:52
Лдано - всем спасибо за помощь. Утро вечера мудреней

Vladimir
14.09.2018
22:49:10

Subdust
15.09.2018
03:59:32
А можете посоветовать книгу по дизайну программ, их архитектуре? Чтоб не относителньо c++, а в целом
Всякие подходы к программированию, плюсы минусы. Фунциональное ООП
Извините если я не совсем по адресу написал

Denis
15.09.2018
04:36:09

Google

Побитый
15.09.2018
05:55:04

Denis
15.09.2018
06:16:58
нужно. Теория категорий умеет ждать

Дмитрий
15.09.2018
06:17:19

Pepe
15.09.2018
06:21:41

Vladislav
15.09.2018
06:26:46

Denis
15.09.2018
06:31:46
почему любой разговор всегда приводит к идрису

Vladislav
15.09.2018
06:32:58
аналог закона Годвина, но для программистов

Evgeniy
15.09.2018
06:37:16
или просто на расте но с завтипами

Denis
15.09.2018
06:37:38
это как китайский

Vladislav
15.09.2018
06:38:43

Evgeniy
15.09.2018
06:39:13