История изменений
Исправление
kvpfs,
(текущая версия)
:
Если у тебя кольцевые зависимости (а это довольно часто бывает в сложных структурах)
Брехня, скорее всего вытекает из твоего патологического неприятия наследования, в итоге выходит циклический говнокод, почти всегда такое можно развязать. Лишь однажды заюзал shared_ptr + weak_ptr в подобном случае.
Пардон, ты пишешь весь свой код на shared_ptr + weak_ptr? Тогда я тебе разочарую — у тебя говнокод.
Есть ли аргументы против кроме фантазий?
но прежде всего не нужно бросать исключения в конструкторах, а лучше вообще не использовать исключения и возвращать ошибку результатом, чего не умеют делать конструкторы C++ и именно потому в них нельзя размещать нетривиальный код.
Неужели мастер не осилил?
struct Q {
Q(int *error_code) {
...
*error_code = 4;
}
};
Про твоё неумение в исключения - не буду, у тебя там что-то вроде религиозных убеждений, бесполезно, однажды ввязывался.
Это один идентификатор типа, если что.
Для пущего эффекта в следующий раз пости это:
namespace shit {
namespace crap {
template <typename CharT,
typename Traits,
typename Alloc,
typename Out_of_hate,
typename Die,
typename Fucked_shit,
typename Placeholder
using fucked_shit_std_cpp_basic_string = std::basic_string<CharT,
Traits, Alloc>;
}
}
std::map<shit::crap::fucked_shit_std_cpp_basic_string<char,
std::char_traits<char>, std::allocator<char>, unsigned long long,
unsigned long long, unsigned long long, unsigned long long>,
...>;
Это только первый параметр шаблон, если что ).
Исходная версия
kvpfs,
:
Если у тебя кольцевые зависимости (а это довольно часто бывает в сложных структурах)
Брехня, скорее всего вытекает из твоего патологического неприятия наследования, в итоге выходит циклический говнокод, почти всегда такое можно развязать. Лишь однажды заюзал shared_ptr + weak_ptr в подобном случае.
Пардон, ты пишешь весь свой код на shared_ptr + weak_ptr? Тогда я тебе разочарую — у тебя говнокод.
Есть ли аргументы против кроме фантазий?
но прежде всего не нужно бросать исключения в конструкторах, а лучше вообще не использовать исключения и возвращать ошибку результатом, чего не умеют делать конструкторы C++ и именно потому в них нельзя размещать нетривиальный код.
Неужели мастер не осилил?
struct Q {
Q(int *error_code) {
...
*error_code = 4;
}
};
Про твоё неумение в исключения - не буду, у тебя там что-то вроде религиозных убеждений, бесполезно, однажды ввязывался.
Это один идентификатор типа, если что.
Для пущего эффект в следующий раз пости это:
namespace shit {
namespace crap {
template <typename CharT,
typename Traits,
typename Alloc,
typename Out_of_hate,
typename Die,
typename Fucked_shit,
typename Placeholder
using fucked_shit_std_cpp_basic_string = std::basic_string<CharT,
Traits, Alloc>;
}
}
std::map<shit::crap::fucked_shit_std_cpp_basic_string<char,
std::char_traits<char>, std::allocator<char>, unsigned long long,
unsigned long long, unsigned long long, unsigned long long>,
...>;
Это только первый параметр шаблон, если что ).