Сообщение Re: Ключевое отличие шаблона от макроса от 09.07.2023 7:56
Изменено 09.07.2023 13:40 rg45
Re: Ключевое отличие шаблона от макроса
Здравствуйте, Shmj, Вы писали:
S>Вот код:
S>Это тот же шаблон класса, только с помощью макросов. И в чем ключевая разница? Что я так уж потерял?
Разница не очень очевидна, только благодяря примитивности примера. А ты попробуй, реализавать что-нибудь посложнее — тот же std::vector, например, или std::string, только ничего не упрощая. Или какие-нибудь метафункции из type_traits.
Ты попробуй, в качестве упражнения, реализовать на макросах компайл-тайм факториал, который мы недавно обсуждали. Я не говорю, что это совсем невозможно — возможно — с некоторыми ограничениями. Но это стоит сделать ради того, чтоб прочувствовать разницу.
Или еще пример, попоробуй изобразить на макросах что-нибудь наподобие Curiously Recurring Template Pattern:
S>Вот код:
S>Это тот же шаблон класса, только с помощью макросов. И в чем ключевая разница? Что я так уж потерял?
Разница не очень очевидна, только благодяря примитивности примера. А ты попробуй, реализавать что-нибудь посложнее — тот же std::vector, например, или std::string, только ничего не упрощая. Или какие-нибудь метафункции из type_traits.
Ты попробуй, в качестве упражнения, реализовать на макросах компайл-тайм факториал, который мы недавно обсуждали. Я не говорю, что это совсем невозможно — возможно — с некоторыми ограничениями. Но это стоит сделать ради того, чтоб прочувствовать разницу.
Или еще пример, попоробуй изобразить на макросах что-нибудь наподобие Curiously Recurring Template Pattern:
template<typename UnderlyingIterator>
class MyIterator : public boost::iterator_adaptor<MyIterator<UnderlyingIterator>>
{
// . . .
};
Re: Ключевое отличие шаблона от макроса
Здравствуйте, Shmj, Вы писали:
S>Вот код:
S>Это тот же шаблон класса, только с помощью макросов. И в чем ключевая разница? Что я так уж потерял?
Разница не очень очевидна, только благодяря примитивности примера. А ты попробуй, реализавать что-нибудь посложнее — тот же std::vector, например, или std::string, только ничего не упрощая. Или какие-нибудь метафункции из type_traits.
Ты попробуй, в качестве упражнения, реализовать на макросах компайл-тайм факториал, который мы недавно обсуждали. Я не говорю, что это совсем невозможно — возможно — с некоторыми ограничениями. Но это стоит сделать ради того, чтоб прочувствовать разницу.
Или еще пример, попоробуй изобразить на макросах что-нибудь наподобие Curiously Recurring Template Pattern:
S>Вот код:
S>Это тот же шаблон класса, только с помощью макросов. И в чем ключевая разница? Что я так уж потерял?
Разница не очень очевидна, только благодяря примитивности примера. А ты попробуй, реализавать что-нибудь посложнее — тот же std::vector, например, или std::string, только ничего не упрощая. Или какие-нибудь метафункции из type_traits.
Ты попробуй, в качестве упражнения, реализовать на макросах компайл-тайм факториал, который мы недавно обсуждали. Я не говорю, что это совсем невозможно — возможно — с некоторыми ограничениями. Но это стоит сделать ради того, чтоб прочувствовать разницу.
Или еще пример, попоробуй изобразить на макросах что-нибудь наподобие Curiously Recurring Template Pattern:
template<typename UnderlyingIterator>
class MyIterator : public boost::iterator_adaptor<MyIterator<UnderlyingIterator>, UnderlyingIterator>
{
// . . .
};