Есть ли способ выбирать между различными реализациями классов в зависимости от типа аргумента шаблона?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ выбирать между различными реализациями классов в зависимости от типа аргумента шаблона?

Сообщение Anonymous »

Например, я хочу создать массив. Массив принимает в качестве аргумента шаблона тип, с которым нужно иметь дело. Теперь, если тип является примитивным (int, double, short), то можно использовать поверхностное копирование, а если это класс, необходимо использовать конструктор копирования класса. Если бы это был один из методов, это было бы легко, я мог бы использовать SFAINE с std::enable_if для возвращаемого значения, но это не относится к конструкторам.

Я попробовали следующее, но GCC-9 выдает ошибку компиляции:

Код: Выделить всё

template< typename Type, typename std::enable_if< std::is_integral< Type >::value() >::type* = nullptr >
class Array
{
...Implementation...
}

template< typename Type, typename std::enable_if< std::is_integral< Type >::value() == false >::type* = nullptr >
class Array
{
...Implementation 2...
}
Кроме того, я попробовал использовать конструктор по умолчанию, но GCC-9 все еще не доволен:

Код: Выделить всё

template< typename Type >
class Array
{

Array( typename std::enable_if< std::is_integral< Type >::value() >::type* = nullptr )
{}

Array( typename std::enable_if< std::is_integral< Type >::value() == false >::type* = nullptr )
{}

}
Есть ли способ создать класс с одинаковым именем, который будет иметь разную реализацию в зависимости от типа заданного аргумента шаблона?
Кажется, есть похожие вопросы, но не совсем по моему мнению, если я ошибаюсь, скажите мне, и я удалю вопрос

Подробнее здесь: https://stackoverflow.com/questions/570 ... -on-the-ty
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Передача шаблона класса в качестве аргумента шаблона шаблона (C++)
    Anonymous » » в форуме C++
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Передача шаблона класса в качестве аргумента шаблона шаблона (C++)
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Лучшая практика условно выбирать фрагменты конфигурации ядра в зависимости от типа изображения?
    Anonymous » » в форуме Linux
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как я могу иметь один заголовочный файл с двумя реализациями [закрыто]
    Гость » » в форуме C++
    0 Ответы
    23 Просмотры
    Последнее сообщение Гость
  • Программно запрашивать связи между реализациями HAPI FHIR и StructureDefinitions?
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»