[00:38:32] <vlad2> valexey_: Я немножко приямого эфира ухватил, потом дела были. Еще не смотрел подробно.ю
[17:45:39] <valexey> http://assets.amuniversal.com/10e0813084370135eed7005056a9545d
[17:46:09] <valexey> http://dilbert.com/
[18:35:50] <valexey> хм. С++ - век живи, век учись.
struct Node {
std::map<int, Node> childs;
};
Это у нас UB оказывается. Но это собирается и работает нормально.
[18:36:17] <valexey> а вот:
struct Node {
std::unordered_map<int, Node> childs;
};
уже не компилится в gcc, но компиляется в MSVS
[18:36:26] <valexey> "if an incomplete type (3.9) is used as a template argument when instantiating a template component, unless specifically allowed for that component."
[18:36:33] <valexey> "The only components that explicitly allow incomplete types are declval, unique_ptr, default_delete, shared_ptr, weak_ptr and enable_shared_from_this + std::vector, std::list, std::forward_list in C++17"
[21:34:14] <vlad2> Эта старая тема. Еще с вектором была. Там все тупо в sizeof упирается, который или нужен для данной реализации или не нужен :)
[21:36:42] <valexey> ну да
[21:36:52] <valexey> но главное что стандарт постулирует что это UB
[21:37:02] <valexey> не ошибка компиляции если что, а прям таки UB
[21:37:26] <valexey> но зато теперь для вектора это легально!
[21:37:28] <valexey> с C++17
[21:37:37] <valexey> и для списка