Сообщение Re[15]: Что не так с C++ - компил-таймовый C++ от 09.12.2024 9:42
Изменено 09.12.2024 9:57 rg45
Re[15]: Что не так с C++ - компил-таймовый C++
Здравствуйте, Shmj, Вы писали:
S>Счетчик вызовов должен занимать одну строчку, иначе с языком что-то не то.
Что-то не распарсил. Что за счётчитк вызовов? И что именно должно занимать одну строчку? Если какой-то абстрактный "счетчик" помогает в решении каких-то задач, при этом он прост в использовании, то кого волнует, сколько строчек занимает реализация этого счётчика?
S>Счетчик вызовов должен занимать одну строчку, иначе с языком что-то не то.
Что-то не распарсил. Что за счётчитк вызовов? И что именно должно занимать одну строчку? Если какой-то абстрактный "счетчик" помогает в решении каких-то задач, при этом он прост в использовании, то кого волнует, сколько строчек занимает реализация этого счётчика?
Re[15]: Что не так с C++ - компил-таймовый C++
Здравствуйте, Shmj, Вы писали:
S>Счетчик вызовов должен занимать одну строчку, иначе с языком что-то не то.
Что-то не распарсил. Что за счётчитк вызовов? И что именно должно занимать одну строчку? Если какой-то абстрактный "счетчик" помогает в решении каких-то задач, при этом он прост в использовании, то кого волнует, сколько строчек занимает реализация этого счётчика?
P.S. Если разговор всё ещё идет про мой компайл-тайм счётчик
http://coliru.stacked-crooked.com/a/af944f20258845e4
Ну, и в чём трагедия, иметь эти 20 строк кода в отдельном файле, в который даже заглядывать не обязательно? Ведь использование этого счётчика выглядит проще некуда: compile_time::tick<class X>. В чём твоя проблема — только в том, что Chat GPT не предоставил тебе разжёванного решения на блюдечке?
S>Счетчик вызовов должен занимать одну строчку, иначе с языком что-то не то.
Что-то не распарсил. Что за счётчитк вызовов? И что именно должно занимать одну строчку? Если какой-то абстрактный "счетчик" помогает в решении каких-то задач, при этом он прост в использовании, то кого волнует, сколько строчек занимает реализация этого счётчика?
P.S. Если разговор всё ещё идет про мой компайл-тайм счётчик
Автор: rg45
Дата: 27.11 18:42
(в чём я не уверен), то следует понимать, что число строк в этой реализации существенно избыточно. И сделано это намеренно — для того, чтобы лучше был понятен принцип действия этого счётчика (хотя, всё это без толку, как я вижу). Минимизированная реализация выглядит существенно более компактной:Дата: 27.11 18:42
http://coliru.stacked-crooked.com/a/af944f20258845e4
template <typename T, size_t I>
struct Declaration { friend constexpr auto value(Declaration); };
template <typename T, size_t I>
struct Definition : Declaration<T, I> {friend constexpr auto value(Declaration<T, I>) { return I; }};
template <typename T, size_t I, typename E>
concept Defined = requires {{sizeof(decltype(value(Declaration<T, I>{})))}; typename E; };
template<typename T, size_t I, typename E>
constexpr size_t firstUndefined() {
if constexpr(Defined<T, I, E>) return firstUndefined<T, I + 1, E>();
else return I;
}
template <typename T, typename E = decltype([]{})>
inline constexpr size_t peek = firstUndefined<T, 0, E>();
template <typename T, typename E = decltype([]{})>
inline constexpr size_t tick = value(Definition<T, peek<T, E>>{});
Ну, и в чём трагедия, иметь эти 20 строк кода в отдельном файле, в который даже заглядывать не обязательно? Ведь использование этого счётчика выглядит проще некуда: compile_time::tick<class X>. В чём твоя проблема — только в том, что Chat GPT не предоставил тебе разжёванного решения на блюдечке?