Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
1

Реализация is_swappable

21.02.2017, 17:59. Просмотров 305. Ответов 1
Метки нет (Все метки)

Вот решил запилить трейт is_swappable(который есть в 17 стандарте)...правильна ли моя реализация и все ли сделано по "фен-шую"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-----много кода-----
namespace dispatch {
 
        using std::swap;
 
        template<class T, class voider = void_t<>>
        struct has_member_swap : std::false_type { };
 
        template<class T>
        struct has_member_swap<T,
            void_t<decltype(swap(std::declval<T&>(), std::declval<T&>()))>
        > : std::integral_constant<bool,
            std::is_move_assignable<T>::value && 
            std::is_move_constructible<T>::value
        > { };
 
        template<class T, std::size_t N>
        struct has_member_swap<T[N]> : has_member_swap<T> { };
    }
Добавлено через 38 минут
И ещё вопросик: как сделать специализацию для двумерных, трехмерных и тд. массивов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2017, 17:59
Ответы с готовыми решениями:

Реализация AND и OR
Данные программы необходимо реализовать на Scheme (диалекте LISP). ВАЖНОЕ УСЛОВИЕ: При...

Реализация на C#
Как в C# работать с WinAPI? Например, я пишу hwnd h = FindWindow(nil,'Безымянный - Блокнот');...

Реализация if-else
Привет всем, задачка вроде не сложная, но никак не могу к ней подступиться. Пишу скрипт. В скрипт...

Реализация
Кто может помочь с одним моментом в курсовике , курсовик сделан почти весь, но там буквально 5-7...

1
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
24.02.2017, 13:21  [ТС] 2
UP: вопрос снимается...додумал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace dispatch {
 
        using std::swap;
 
        template<class T, class voider = void_t<>>
        struct has_member_swap : std::false_type { };
 
        template<class T>
        struct has_member_swap<T,
            void_t<decltype(noexcept(swap(std::declval<T&>(), std::declval<T&>()))), typename std::enable_if_t<!std::is_array<T>::value>>
        > : std::integral_constant<bool,
            std::is_move_assignable<T>::value &&
            std::is_move_constructible<T>::value
        > { };
 
        template<class T>
        struct has_member_swap<T, typename std::enable_if_t<std::is_array<T>::value>> : has_member_swap<std::remove_all_extents_t<T>> { };
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2017, 13:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Реализация ЛС
Добрый день, нужна помощь. Начинаю делать Личные сообщения. Стразу возникает вопрос. Как достать...

Реализация
Хочу создать программу Простую (при наживании на кнопку к примеру ок) Создавался бат файл с моими...

Нужна реализация
У меня такая проблемка, немного странная, но всё же прошу помощи уже не варят мозги, а сроки сдачи...

Реализация формулы
Формула: M=b(a^x)^-1 mod 11 Реализация __int64 T = fmod(b*pow(pow(a,x),-1),11); выдаёт...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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