Форум программистов, компьютерный форум CyberForum.ru

Что за пустые шаблоны template <> struct/inline? - C++

Восстановить пароль Регистрация
 
ohos
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
06.07.2014, 16:11     Что за пустые шаблоны template <> struct/inline? #1
что за пустые шаблоны template <> за которыми следуют class/struct/inline?

По многочисленным источникам в c++ шаблоны имеют вид, цитата с википедии:

Шаблон функции начинается с ключевого слова template, за которым в угловых скобках следует список параметров. Затем следует объявление функции:

C++
1
2
template< typename T > 
void sort( T array[], int size );  // прототип: шаблон sort объявлен, но не определён

однако недавно встретил запись вида

C++
1
2
3
4
5
6
7
8
9
10
11
// if we don't have a held type, return the destructor of the raw type
        template<>
        struct internal_const_holder_destructor<detail::null_type>
        {
            typedef void(*destructor_t)(void*);
            template<class T>
            static destructor_t apply(detail::type_<T>)
            {
                return 0;
            }
        };
притом запись template <> я не смог найти:

в интернете (полагаю гугл просто не ищет спец символы заключенные в кавычки типо "<>")
книге строуструпа за 2011 в djvu
на странице строуструпа http://www.stroustrup.com/

зато поиском по странице строуструпа нашел интересный файлик для его студентов

http://www.stroustrup.com/Programmin...b_facilities.h

где используется точно такой же способ записи

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifdef _MSC_VER
#include <hash_map>
using stdext::hash_map;
#else
#include <ext/hash_map>
using __gnu_cxx::hash_map;
 
namespace __gnu_cxx {
 
    template<> struct hash<std::string>
    {
        size_t operator()(const std::string& s) const
        {
            return hash<char*>()(s.c_str());
        }
    };
 
} // of namespace __gnu_cxx
#endif
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.07.2014, 16:13     Что за пустые шаблоны template <> struct/inline? #2
Цитата Сообщение от ohos Посмотреть сообщение
что за пустые шаблоны template <>
Так начинается специализация шаблона для конкретного типа. Т.е. если тип предполагает особенную реализацию шаблона.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
06.07.2014, 16:14     Что за пустые шаблоны template <> struct/inline? #3
Специализация
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
06.07.2014, 16:19     Что за пустые шаблоны template <> struct/inline? #4
Цитата Сообщение от Tulosba Посмотреть сообщение
Так начинается специализация шаблона для конкретного типа.
Тут надо уточнить, что это полная специализация.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.07.2014, 16:48     Что за пустые шаблоны template <> struct/inline? #5
DrOffset, разумное замечание. Однако упоминание "конкретного типа" как бы подразумевает, что в итоге будет "конкретный" же код, а не шаблонный.
Yandex
Объявления
06.07.2014, 16:48     Что за пустые шаблоны template <> struct/inline?
Ответ Создать тему
Опции темы

Текущее время: 03:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru