Как применить ограничение шаблона Enable_if_t ко всему классу с отдельным кодом реализации, если это возможно? [закрыто] ⇐ C++
Как применить ограничение шаблона Enable_if_t ко всему классу с отдельным кодом реализации, если это возможно? [закрыто]
Примечание: я предпочитаю всегда хранить свои реализации отдельно от объявлений, даже для кода шаблона, который все равно должен находиться в заголовке. Поэтому я обычно использую файл .h для объявлений, а в нижней части этого файла включаю файл .hpp для встроенных и шаблонных реализаций, а затем помещаю свои не- встроенные, нешаблонные реализации в файлах .cpp. Возможно, в данном случае невозможно следовать этому предпочтению, или я делаю что-то неправильно.
У меня есть исходный код, который компилируется и запускается:
#include #include #include #define OddSource_Export __attribute((visibility("default"))) класс IPAddress {}; класс IPv4Address: публичный IPAddress { публика: uint8_t version() const { возврат 4; } }; класс IPv6Address: публичный IPAddress { публика: uint8_t version() const { возврат 6; } }; шаблон класс OddSource_Export InterfaceIPAddress { публика: InterfaceIPAddress (TAddress const &, uint16_t); uint8_t version() const; частный: ::std::unique_ptr const _address; uint16_t const _flags; }; шаблон ИнтерфейсIPAddress:: InterfaceIPAddress (TAddress const &address, флаги uint16_t) : _address(новый TAddress(адрес)), _flags(флаги) {} шаблон uint8_t ИнтерфейсIPAddress:: версия() константа { верните this->_address->version(); } интервал основной() { IPv4Адрес адрес4; Адрес InterfaceIPAddress(addr4, 0); std::cout
Примечание: я предпочитаю всегда хранить свои реализации отдельно от объявлений, даже для кода шаблона, который все равно должен находиться в заголовке. Поэтому я обычно использую файл .h для объявлений, а в нижней части этого файла включаю файл .hpp для встроенных и шаблонных реализаций, а затем помещаю свои не- встроенные, нешаблонные реализации в файлах .cpp. Возможно, в данном случае невозможно следовать этому предпочтению, или я делаю что-то неправильно.
У меня есть исходный код, который компилируется и запускается:
#include #include #include #define OddSource_Export __attribute((visibility("default"))) класс IPAddress {}; класс IPv4Address: публичный IPAddress { публика: uint8_t version() const { возврат 4; } }; класс IPv6Address: публичный IPAddress { публика: uint8_t version() const { возврат 6; } }; шаблон класс OddSource_Export InterfaceIPAddress { публика: InterfaceIPAddress (TAddress const &, uint16_t); uint8_t version() const; частный: ::std::unique_ptr const _address; uint16_t const _flags; }; шаблон ИнтерфейсIPAddress:: InterfaceIPAddress (TAddress const &address, флаги uint16_t) : _address(новый TAddress(адрес)), _flags(флаги) {} шаблон uint8_t ИнтерфейсIPAddress:: версия() константа { верните this->_address->version(); } интервал основной() { IPv4Адрес адрес4; Адрес InterfaceIPAddress(addr4, 0); std::cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Перевернуть все текстовые файлы по всему пути с отдельным выводом независимо
Anonymous » » в форуме Python - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Могут ли реализации (компиляторы) переупорядочить по всему потенциально инфинитным петлям?
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Могут ли реализации (компиляторы) переупорядочить по всему потенциально инфинитным петлям?
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-