Чего бы почитать по C++ templates, покороче?

User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Чего бы почитать по C++ templates, покороче?

Post by M. Ridcully »

На C++ пишу всю жизнь, но от дебрей шаблонов бог в-основном берёг до последнего времени. А тут ещё C++11/14...
В-общем, чего бы такого почитать, чтобы освежить про всякие там специализации и последние версии стандартов - желательно покороче и попроще и без повторения очевидного.

Скажем, недавно столкнулся с вопросом по variadic templates. Вот такая вот специализация для замыкания рекурсии:

Code: Select all

template <class T, class... Args>
class Table {
...
};

template <class T>
class Table<T> {
...
};
она вообще правильная? Погуглил, и какие-то противоречивые ответы получаю...
Интуитивно вроде всё просто. И на GCC и на Clang вроде работает. Но нужно чтобы в-принципе правильно было, и на Visual C++ тоже работало (сам там проверить не могу).
Мир Украине. Свободу России.
User avatar
АццкоМото
Уже с Приветом
Posts: 15276
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Чего бы почитать по C++ templates, покороче?

Post by АццкоМото »

Старика Страуструпа, вестимо. А как можно до 2015 года дожить сиплюсплюснику без шаблонов - тайна сия великая есть
Мат на форуме запрещен, блдж!
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Чего бы почитать по C++ templates, покороче?

Post by M. Ridcully »

АццкоМото wrote:Старика Страуструпа, вестимо.
Слишком много букв.
АццкоМото wrote:А как можно до 2015 года дожить сиплюсплюснику без шаблонов - тайна сия великая есть
Имелось в вижу в дебри не вникал - скажем, какая специализация является более специальной и т.д.
Темплейты - их можно очень на разных уровнях знать / пользовать / понимать.
Лавры Александреску меня не беспокоят.
Мир Украине. Свободу России.
User avatar
AndreyT
Уже с Приветом
Posts: 3000
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: Чего бы почитать по C++ templates, покороче?

Post by AndreyT »

M. Ridcully wrote:Вот такая вот специализация для замыкания рекурсии:
Во-первых, у вас сама рекурсия отсутствует. Каким образом делается рекурсивный "вызов"?

Во-вторых, базу рекурсии рекомендуется хотя бы объявить до рекурсивного вызова, а не после, как у вас.
Best regards,
Андрей
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Чего бы почитать по C++ templates, покороче?

Post by M. Ridcully »

Вот пополнее, что-то вроде такого:

Code: Select all

template <typename T, typename... Args>                                         
class Table {                                                                   
  ...
  typedef Table<Args...> Slice;                                                 
  typedef std::unordered_map<T, Slice> SliceMap;                                
                                                                                
  SliceMap slices_;                                                             
};                                                                              

template <typename T>                                                           
class Table<T> {                      
  ...                                          
  std::unordered_map<T, SomeType> values_;                                   
};                                                                              

Мир Украине. Свободу России.
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: Чего бы почитать по C++ templates, покороче?

Post by M. Ridcully »

AndreyT wrote:Во-вторых, базу рекурсии рекомендуется хотя бы объявить до рекурсивного вызова, а не после, как у вас.
Зачем?
Мир Украине. Свободу России.
User avatar
AndreyT
Уже с Приветом
Posts: 3000
Joined: 14 Apr 2004 01:11
Location: SFBA (было: Минск, Беларусь)

Re: Чего бы почитать по C++ templates, покороче?

Post by AndreyT »

M. Ridcully wrote:
AndreyT wrote:Во-вторых, базу рекурсии рекомендуется хотя бы объявить до рекурсивного вызова, а не после, как у вас.
Зачем?
Я ерунду написал. Разумеется, специализация должна объявляться после объявления основного шаблона. Наоборот и не получится.
Best regards,
Андрей
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: Чего бы почитать по C++ templates, покороче?

Post by Мальчик-Одуванчик »

User avatar
roadman
Уже с Приветом
Posts: 707
Joined: 12 Mar 2003 22:29
Location: Moscow->Bay Area, CA

Re: Чего бы почитать по C++ templates, покороче?

Post by roadman »

"Effective Modern C++" by Scott Meyers
http://www.amazon.com/Effective-Modern- ... rn+C%2B%2B
The philosophy of one century is the common sense of the next. --Henry Ward Beecher
blanko27
Уже с Приветом
Posts: 2264
Joined: 17 Jun 2003 04:41
Location: Just like US

Re: Чего бы почитать по C++ templates, покороче?

Post by blanko27 »

Если вам только по темплейтам (не stl), то Vandevoorde/Josuttis "C++ Templates: The Complete Guide" очень хороши были, но они 2002 года издания, поэтому C++ 11 там и не пахнет, но все специализации/инстантиации хорошо расписаны. Буков там, правда, много, где-то к 700К.
...а мы такой компанией, возьмем, да и припремся к Элис!
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: Чего бы почитать по C++ templates, покороче?

Post by Мальчик-Одуванчик »

blanko27 wrote:Если вам только по темплейтам (не stl), то Vandevoorde/Josuttis "C++ Templates: The Complete Guide" очень хороши были, но они 2002 года издания, поэтому C++ 11 там и не пахнет, но все специализации/инстантиации хорошо расписаны. Буков там, правда, много, где-то к 700К.
Очень ясное и доступное изложение в отличие от занудного Майерса.
Есть еще монография Davide Gennaro - но в ней, как и у Страуструпа много опечаток.
Alexandr
Уже с Приветом
Posts: 3647
Joined: 23 May 2010 15:10

Re: Чего бы почитать по C++ templates, покороче?

Post by Alexandr »

blanko27 wrote:Если вам только по темплейтам (не stl), то Vandevoorde/Josuttis "C++ Templates: The Complete Guide" очень хороши были, но они 2002 года издания, поэтому C++ 11 там и не пахнет, но все специализации/инстантиации хорошо расписаны. Буков там, правда, много, где-то к 700К.
+1
User avatar
adb
Уже с Приветом
Posts: 9275
Joined: 14 Dec 2001 10:01
Location: Российская Федерация

Re: Чего бы почитать по C++ templates, покороче?

Post by adb »

АццкоМото wrote:А как можно до 2015 года дожить сиплюсплюснику без шаблонов - тайна сия великая есть
Совсем без вряд ли, но на базовом уровне особых знаний не требуется. А насколько навороты актуальны еще вопрос.
Миру мир

Return to “Вопросы и новости IT”