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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ohos
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
#1

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

06.07.2014, 16:11. Просмотров 704. Ответов 4
Метки нет (Все метки)

что за пустые шаблоны 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2014, 16:11     Что за пустые шаблоны template <> struct/inline?
Посмотрите здесь:

C++ Объясните,почему шаблоны написаны через struct?
C++ подскажите template<class> (Шаблоны и указатели)
C++ inline-объясните что такое
Ошибки: 1) use of class template requires template argument list 2) 'T' : undeclared identifier C++
C++ inline функции vs инструкции inline функций
Шаблоны template с ограниченными параметрами C++
объясните пожалуйста. что такое struct STUDENT? C++
Ошибка компиляции: template-id does not match any template declaration C++
C++ Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
'MyQueue' : use of class template requires template argument list C++
C++ Что означает запись (struct addr *)&one
C++ В чем различие template <typename T> от template <class T> ?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4391 / 3234 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.07.2014, 16:13     Что за пустые шаблоны template <> struct/inline? #2
Цитата Сообщение от ohos Посмотреть сообщение
что за пустые шаблоны template <>
Так начинается специализация шаблона для конкретного типа. Т.е. если тип предполагает особенную реализацию шаблона.
Voivoid
672 / 275 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
06.07.2014, 16:14     Что за пустые шаблоны template <> struct/inline? #3
Специализация
DrOffset
6858 / 4069 / 927
Регистрация: 30.01.2014
Сообщений: 6,867
06.07.2014, 16:19     Что за пустые шаблоны template <> struct/inline? #4
Цитата Сообщение от Tulosba Посмотреть сообщение
Так начинается специализация шаблона для конкретного типа.
Тут надо уточнить, что это полная специализация.
Tulosba
:)
Эксперт С++
4391 / 3234 / 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?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru