Сообщение Re: Концепция умного C++ от 18.04.2025 9:07
Изменено 18.04.2025 9:43 rg45
Re: Концепция умного C++
Здравствуйте, Shmj, Вы писали:
S>B здесь главное не поддаться греху гордыни — когда тебе хочется доказать другим что ты способен, что SFINAE и 4-х этажные шаблоны тебе по плечу. А нужно не поддаваться греху гордыни а наоборот проявить смирение и кротость — аскетизм. Ограничить себя в излишествах и довольствоваться простым минимализмом.
S>
На этот вопрос я тебе уже отвечал
Что ж, повторюсь. Нормальные программисты используют шаблоны и SFINAE совсем не для того, чтобы кому-то что-то доказать, а для того, чтобы решать какие-то задачи. Отказ от использования перечисленного — это просто отказ от решения задач. А сложный и запутанный код, как правило, получается у новичков, которые только начинают осваивать этот подход. У опытных программистов даже со SFINAE код получается понятным и читабельным, вот тебе свежий пример:
http://rsdn.org/forum/cpp/8923323.1
Также повторюсь, что SFINAE потерял актуальность с приходом концептов. И современный C++ позволяет записывать то же самое компактнее и элегантнее:
http://rsdn.org/forum/cpp/8923201.1
Но главное, чего ты не соображаешь — это то, что некоторая сложность шаблонных сущностей — это всего лишь скромная плата за то упрощение, которое они дают в точках использования, число которых несоизмеримо больше:
Такие как предпочитают размазать говно по всему коду, вместо того, чтобы в одном месте написать пару несложных шаблончиков. И это вовсе не по каким-то принципиальным соображениям, а просто потому, что вам это недоступно, вот и всё.
А ты просто неуч и лентяй. Вместо того, чтобы учиться и осваивать язык, ты ищешь способы, как программировать, не приходя в сознание.
S>B здесь главное не поддаться греху гордыни — когда тебе хочется доказать другим что ты способен, что SFINAE и 4-х этажные шаблоны тебе по плечу. А нужно не поддаваться греху гордыни а наоборот проявить смирение и кротость — аскетизм. Ограничить себя в излишествах и довольствоваться простым минимализмом.
S>
На этот вопрос я тебе уже отвечал
Автор: rg45
Дата: 16.04.25
, но ты, как обычно, предпочёл "не заметить" неудобную информацию.Дата: 16.04.25
Что ж, повторюсь. Нормальные программисты используют шаблоны и SFINAE совсем не для того, чтобы кому-то что-то доказать, а для того, чтобы решать какие-то задачи. Отказ от использования перечисленного — это просто отказ от решения задач. А сложный и запутанный код, как правило, получается у новичков, которые только начинают осваивать этот подход. У опытных программистов даже со SFINAE код получается понятным и читабельным, вот тебе свежий пример:
http://rsdn.org/forum/cpp/8923323.1
Автор: rg45
Дата: 18.04.25
Дата: 18.04.25
template<typename CharPointerType>
const char* rawConstCharPtrFromIterator(CharPointerType* pstr)
{
return reinterpret_cast<const char*>(pstr);
}
template <typename IteratorType, std::enable_if_t<
IsDereferenceableToLvalue<IteratorType>
and not IsPointer<IteratorType>
, int> = 0>
const char* rawConstCharPtrFromIterator(IteratorType it)
{
return reinterpret_cast<const char*>(&*it);
}Также повторюсь, что SFINAE потерял актуальность с приходом концептов. И современный C++ позволяет записывать то же самое компактнее и элегантнее:
http://rsdn.org/forum/cpp/8923201.1
Автор: rg45
Дата: 18.04.25
Дата: 18.04.25
const char* rawConstCharPtrFromIterator(Pointer auto p)
{
return reinterpret_cast<const char*>(p);
}
const char* rawConstCharPtrFromIterator(Dereferenceable auto it)
{
return reinterpret_cast<const char*>(&*it);
}Но главное, чего ты не соображаешь — это то, что некоторая сложность шаблонных сущностей — это всего лишь скромная плата за то упрощение, которое они дают в точках использования, число которых несоизмеримо больше:
rawConstCharPtrFromIterator(c);
rawConstCharPtrFromIterator(s.begin());
rawConstCharPtrFromIterator(it);Такие как предпочитают размазать говно по всему коду, вместо того, чтобы в одном месте написать пару несложных шаблончиков. И это вовсе не по каким-то принципиальным соображениям, а просто потому, что вам это недоступно, вот и всё.
А ты просто неуч и лентяй. Вместо того, чтобы учиться и осваивать язык, ты ищешь способы, как программировать, не приходя в сознание.
Re: Концепция умного C++
Здравствуйте, Shmj, Вы писали:
S>B здесь главное не поддаться греху гордыни — когда тебе хочется доказать другим что ты способен, что SFINAE и 4-х этажные шаблоны тебе по плечу. А нужно не поддаваться греху гордыни а наоборот проявить смирение и кротость — аскетизм. Ограничить себя в излишествах и довольствоваться простым минимализмом.
S>
На этот вопрос я тебе уже отвечал
Что ж, повторюсь. Нормальные программисты используют шаблоны и SFINAE совсем не для того, чтобы кому-то что-то доказать, а для того, чтобы решать какие-то задачи. Отказ от использования перечисленного — это просто отказ от решения задач. А сложный и запутанный код, как правило, получается у новичков, которые только начинают осваивать этот подход. У опытных программистов даже со SFINAE код получается понятным и читабельным, вот тебе свежий пример:
http://rsdn.org/forum/cpp/8923323.1
Также повторюсь, что SFINAE потерял актуальность с приходом концептов. И современный C++ позволяет записывать то же самое компактнее и элегантнее:
http://rsdn.org/forum/cpp/8923201.1
Но главное, чего ты не соображаешь — это то, что некоторая сложность шаблонных сущностей — это всего лишь скромная плата за то упрощение, которое они дают в точках использования, число которых несоизмеримо больше:
Такие как предпочитают размазать говно по всему коду, вместо того, чтобы в одном месте написать пару несложных шаблончиков. И это вовсе не по каким-то принципиальным соображениям, а просто потому, что вам это недоступно, вот и всё.
А конкретно ты — просто неуч и лентяй. Вместо того, чтобы учиться и осваивать язык, ты ищешь способы, как программировать, не приходя в сознание.
S>B здесь главное не поддаться греху гордыни — когда тебе хочется доказать другим что ты способен, что SFINAE и 4-х этажные шаблоны тебе по плечу. А нужно не поддаваться греху гордыни а наоборот проявить смирение и кротость — аскетизм. Ограничить себя в излишествах и довольствоваться простым минимализмом.
S>
На этот вопрос я тебе уже отвечал
Автор: rg45
Дата: 16.04.25
, но ты, как обычно, предпочёл "не заметить" неудобную информацию.Дата: 16.04.25
Что ж, повторюсь. Нормальные программисты используют шаблоны и SFINAE совсем не для того, чтобы кому-то что-то доказать, а для того, чтобы решать какие-то задачи. Отказ от использования перечисленного — это просто отказ от решения задач. А сложный и запутанный код, как правило, получается у новичков, которые только начинают осваивать этот подход. У опытных программистов даже со SFINAE код получается понятным и читабельным, вот тебе свежий пример:
http://rsdn.org/forum/cpp/8923323.1
Автор: rg45
Дата: 18.04.25
Дата: 18.04.25
template<typename CharPointerType>
const char* rawConstCharPtrFromIterator(CharPointerType* pstr)
{
return reinterpret_cast<const char*>(pstr);
}
template <typename IteratorType, std::enable_if_t<
IsDereferenceableToLvalue<IteratorType>
and not IsPointer<IteratorType>
, int> = 0>
const char* rawConstCharPtrFromIterator(IteratorType it)
{
return reinterpret_cast<const char*>(&*it);
}Также повторюсь, что SFINAE потерял актуальность с приходом концептов. И современный C++ позволяет записывать то же самое компактнее и элегантнее:
http://rsdn.org/forum/cpp/8923201.1
Автор: rg45
Дата: 18.04.25
Дата: 18.04.25
const char* rawConstCharPtrFromIterator(Pointer auto p)
{
return reinterpret_cast<const char*>(p);
}
const char* rawConstCharPtrFromIterator(Dereferenceable auto it)
{
return reinterpret_cast<const char*>(&*it);
}Но главное, чего ты не соображаешь — это то, что некоторая сложность шаблонных сущностей — это всего лишь скромная плата за то упрощение, которое они дают в точках использования, число которых несоизмеримо больше:
rawConstCharPtrFromIterator(c);
rawConstCharPtrFromIterator(s.begin());
rawConstCharPtrFromIterator(it);Такие как предпочитают размазать говно по всему коду, вместо того, чтобы в одном месте написать пару несложных шаблончиков. И это вовсе не по каким-то принципиальным соображениям, а просто потому, что вам это недоступно, вот и всё.
А конкретно ты — просто неуч и лентяй. Вместо того, чтобы учиться и осваивать язык, ты ищешь способы, как программировать, не приходя в сознание.