Jak wpisać klasę szablonu? [duplikat]
To pytanie ma już odpowiedź tutaj:
- C++ template typedef 2 odpowiedzi
Jak mam typedef
a template class
? Coś w stylu:
typedef std::vector myVector; // <--- compiler error
Znam 2 sposoby:
(1) #define myVector std::vector // not so good
(2) template<typename T>
struct myVector { typedef std::vector<T> type; }; // verbose
Czy mamy coś lepszego w C++0x ?
67
2 answers
Tak. Nazywa się to "alias template " i jest to nowa funkcja w C++11.
template<typename T>
using MyVector = std::vector<T, MyCustomAllocator<T>>;
Użycie byłoby dokładnie takie, jakiego się spodziewasz:
MyVector<int> x; // same as: std::vector<int, MyCustomAllocator<int>>
GCC obsługuje go od 4.7, A Clang od 3.0. 115
Author: Travis Gockel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-25 20:26:38
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-25 20:26:38
W C++03 możesz dziedziczyć z klasy (publicznie lub prywatnie), aby to zrobić.
template <typename T>
class MyVector : public std::vector<T, MyCustomAllocator<T> > {};
Musisz zrobić trochę więcej pracy (konkretnie, konstruktory kopiujące, operatory przypisania), ale jest to całkiem wykonalne.
15
Author: dascandy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-02 07:00:53
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-02 07:00:53