
Anton
24.09.2018
21:59:55
даже сформулировать по-людски не могут )

PRoSToC0der
24.09.2018
22:00:24

Constantine
24.09.2018
22:00:40
Z x{-1} это explicit, Z x = -1 это implicit

Google

Constantine
24.09.2018
22:01:13
using Z = unsigned int;
первое не работает, второе работает

PRoSToC0der
24.09.2018
22:01:54
второе работает из-за обратной совместимости

Constantine
24.09.2018
22:02:15
а первое не работает из-за совместимости

PRoSToC0der
24.09.2018
22:02:40
а первое не работает, потому что там не нужна обратная совместимость

Constantine
24.09.2018
22:02:47
так что смысл выражения в точности инвертируется в зависимости от user-defined типа

PRoSToC0der
24.09.2018
22:03:33
в случае с user-defined типом там в обоих местах не нужна обратная совместимость

Constantine
24.09.2018
22:03:56
т.е. грубо говоря это кнопка, которая при нажатии правым мизинцем включает чайник, при нажатии левым мизинцем запускает машину судного дня
не перепутай

PRoSToC0der
24.09.2018
22:05:28
по логике современного C++ при Z = unsigned int оба места не должны компилироваться
если бы не нужна была обратная совместимость

Anton
24.09.2018
22:06:27
но т.к. обратная совместимость нужна

Google

Anton
24.09.2018
22:06:31
наверни говна )

Constantine
24.09.2018
22:06:32
вы вообще понимаете что я спрашиваю?

PRoSToC0der
24.09.2018
22:06:44
но давай ограничимся только user-defined типами

Constantine
24.09.2018
22:07:03
нет
почему поведение синтаксической конструкции строго инвертируется для user defined типа
и как синтаксически выразить инициализацию с implicit и explicit требованием

PRoSToC0der
24.09.2018
22:07:22
ничего не мешает навернуть свой user-defined unsigned int

Constantine
24.09.2018
22:07:31
повторив поведение unsigned int

PRoSToC0der
24.09.2018
22:08:11

Constantine
24.09.2018
22:08:41
что будет если Z это std::byte?

PRoSToC0der
24.09.2018
22:10:02

Constantine
24.09.2018
22:10:15

Yarique
24.09.2018
22:10:28
Ребят, подскажите, пожалуйста.
auto sock = std::make_shared<boost::asio::ip::tcp::socket>(
ioc,
ep.protocol()
);
sock-> async_connect(
ep,
[s= std::move(sock) ](auto && ...args){...}
);
это undefined behaviour?

PRoSToC0der
24.09.2018
22:10:37

Constantine
24.09.2018
22:11:31

PRoSToC0der
24.09.2018
22:11:39

Constantine
24.09.2018
22:11:56
да
т.е. в C++ по-прежнему нельзя создать integer strong alias?

PRoSToC0der
24.09.2018
22:13:32

Google

Anton
24.09.2018
22:14:33
её набрать можно быстрее например

PRoSToC0der
24.09.2018
22:14:38
или сделать user-defined литерал 1_byte

Anton
24.09.2018
22:14:38
и читается лучше
а суффиксы эти вообще дичь

PRoSToC0der
24.09.2018
22:14:59

Constantine
24.09.2018
22:15:50

PRoSToC0der
24.09.2018
22:16:47

Constantine
24.09.2018
22:17:12
что из следующего компилируется:
std::vector<unsigned int> v (-1);
std::vector<unsigned int> v {-1};
std::vector<unsigned int> v = { -1 };
да
ссылку на стандарт, пожалуйста

PRoSToC0der
24.09.2018
22:18:19

Constantine
24.09.2018
22:18:53
и то же самое - ссылку на стандарт для emplace_back
только первое
template <typename T, typename... Args>
void f(Args&&... args) {
T x{std::forward<Args>(args)...};
}
void foo() {
f<unsigned int>(-1);
}

PRoSToC0der
24.09.2018
22:20:13
так тебе ссылку на push_back или ссылку на implicit конверсии из signed в unsigned?

Constantine
24.09.2018
22:20:44
@antoshkka
репортните там в gcc
https://godbolt.org/z/SDaOeW

PRoSToC0der
24.09.2018
22:22:47

Constantine
24.09.2018
22:26:17

PRoSToC0der
24.09.2018
22:27:12

Google

PRoSToC0der
24.09.2018
22:37:47

Alexander
24.09.2018
22:45:20

PRoSToC0der
24.09.2018
22:46:20
А что найти хочешь?
то, что emplace_back конструирует используя allocator_traits<...>::construct
А что найти хочешь?
нашёл у vector<bool> http://eel.is/c++draft/vector.bool#2:
Unless described below, all operations have the same requirements and semantics as the primary vector template, except that operations dealing with the bool value type map to bit values in the container storage and allocator_traits::construct is not used to construct these values.
идём от противного
А что найти хочешь?
http://eel.is/c++draft/container.requirements#general-3 скорее всего это то, что нужно

Alex Фэils?︙
25.09.2018
00:26:33

Constantine
25.09.2018
00:28:39

Alex Фэils?︙
25.09.2018
00:30:06

Constantine
25.09.2018
00:31:03

Alex Фэils?︙
25.09.2018
00:32:18
ну концептуально да, по факту я не хочу ща ночью по стандартам и реализациям лазить и смотреть)

Constantine
25.09.2018
00:33:54

Alex Фэils?︙
25.09.2018
00:34:32
возможно. ничего не хочу говорить точно, чтобы не ошибиться, голова не варит уже, честно говоря
а я не помню, объект, который обновляет состояние нескольких итераторов в range-based-for, в итоге приняли в 20-й стандарт? (я про некий аналог zip)
я о такой фигне:
vector vec1, vec2;
for (auto [it1, it2] : zip(vec1, vec2)) {
// что-то делаем с итераторами и двигаемся по ним одновременно...
}

Constantine
25.09.2018
00:46:02

Andrey
25.09.2018
07:24:02
Я просто оставлю это здесь https://twitter.com/zygoloid/status/1044279153401389056
Вдруг среди обитателей этого чата найдутся любители отвратительного.

Igor
25.09.2018
07:36:07

Google

Spoonson
25.09.2018
08:45:24

Александр
25.09.2018
10:22:07

Yarique
25.09.2018
10:32:12


Spoonson
25.09.2018
10:36:31

Yarique
25.09.2018
10:36:53
Не платить за то что не используешь

Antony
25.09.2018
10:37:32

Spoonson
25.09.2018
10:46:24
Атомарные счётчики - причина
просто мне кажется, что стоимость async_connect должна быть настолько выше инкремента, что на это можно забить. С другой стороны, наличие вообще атомарности в счетчике у shared_ptr мне кажется весьма интересным. Есть ли вообще ситуации, когда это (на практике) полезно?

Yarique
25.09.2018
10:48:13

Ⱪonstantin
25.09.2018
10:48:41

Yarique
25.09.2018
10:49:10

Ⱪonstantin
25.09.2018
10:49:12

Yarique
25.09.2018
10:50:17