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

Применение is_same для списка типов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Виснет графика в SDL http://www.cyberforum.ru/cpp/thread1652358.html
Здравствуйте, пишу программу, которая меняет две картинки под музыку, после нескольких секунд музыка продолжает играть, но картинки не меняются и программа получает статус "не отвечает". Почему? Буду благодарен за помощь. #include <SDL.h> #include <SDL_mixer.h> #include <stdio.h> #include <string> #include <iostream> using namespace std; int main( int argc, char* args ){
C++ [mingw] не видит <codecvt> всем привет. есть библиотека, которая изначально разрабатывалась в msvc2013. к библиотеке есть требование - кросс-платформа, и отсутствие внешних зависимостей. то есть, нельзя подтягивать буст, и подобные тяжеловесные вещи. казалось бы - никаких левых зависимостей, http://www.cyberforum.ru/cpp/thread1652249.html
C++ Обертка над boost::lexical_cast для работы с unsigned типами
Пару дней назад выяснилось, что boost::lexical_cast не удовлетворяет нескольким требованиям в моей программе. boost::lexical_cast отказывается обрабатывать и выбрасывает исключение, если имеются пробелы в начале или в конце входной строки. Также для unsigned типов, отрицательные значения обрабатываются нормально, т.е., например, boost::lexical_cast<unsigned int>("-1") даст вполне валидное...
C++ Hex to Ascii
Всем привет! Работаю с АЦП, и ему надо отправить ascii код (55H 55H 00H 00H AAH). (в виде char будет (UU ª), просто так отправить не удалось) Попробовал отправить hex (55 55 00 00 AA), не принимает. Кто-нибудь может мне помочь вывести строчку "UU ª" хотя бы на командную строку?
C++ QtCipherSqlitePlugin sqlite3_rekey не шифрует http://www.cyberforum.ru/cpp/thread1649506.html
Пытаюсь сменить пароль на БД. QSqlDriver *driver=myDatabase.driver(); QVariant handle=driver->handle(); Q_ASSERT_X(handle.isValid(), Q_FUNC_INFO, "Invalid handle of QSqlDriver"); if(handle.isValid() && qstrcmp(handle.typeName(), "sqlite3*")!=0) return false; sqlite3* db=*static_cast<sqlite3* const*>(handle.data()); if(db==NULL)
C++ Инструмент для быстрого создания установщиков программ Есть ли какой-нибудь инструмент для быстрого создания установщиков программ, как например InnoSetup, но для C++? Или хотя бы приближенный к этому. подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
12890 / 7276 / 811
Регистрация: 27.09.2012
Сообщений: 17,975
Записей в блоге: 2
Завершенные тесты: 1
01.02.2016, 12:35  [ТС]     Применение is_same для списка типов
Цитата Сообщение от Kastaneda Посмотреть сообщение
Поддерживаю.
Как раз занимаюсь

Добавлено через 27 минут
Переделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// =========================================================================================================
// ================================================is_same_list=============================================
// =========================================================================================================
 
 
#include <type_traits>
 
namespace detail
{
 
    template<
        template<class T> class LogicTemplate,
        typename SameType
    >
 
    constexpr bool
    is_same_list_impl()
    {
        return !LogicTemplate<bool>()(true,false) ;
    }
 
 
    template<
    template<class T> class LogicTemplate,
        typename SameType,
        typename FirstType,
        typename ... Args
    >
    constexpr bool
    is_same_list_impl()
    {
        return
                LogicTemplate<bool>()(std::is_same<SameType, FirstType>::value,
                    is_same_list_impl<LogicTemplate, SameType, Args...>()
                ) ;
    }
 
 
 
}//end of detail
 
 
 
 
namespace compile_time
{
    template<class T>
    struct logical_and : public std::binary_function<T,T,bool>
    {
        constexpr bool operator()(const T& first, const T& second) { return first && second ; }
    };
 
 
    template<class T>
    struct logical_or : public std::binary_function<T,T,bool>
    {
        constexpr bool operator()(const T& first, const T& second) { return first || second ; }
    };
}//end of compile_time
 
 
 
 
template<typename SameType, typename ... Args>
struct is_all_same
{
    static constexpr bool value =
            detail::is_same_list_impl<
                compile_time::logical_and,
                SameType, Args...
            >() ;
};
 
 
template<typename SameType, typename ... Args>
struct is_one_same
{
    static constexpr bool value =
            detail::is_same_list_impl<
                compile_time::logical_or,
                SameType, Args...
            >() ;
};
 
 
 
 
 
// =========================================================================================================
// =========================================================================================================
// =========================================================================================================
Почему-то ночью так не получалось,
видать спал больше

Добавлено через 8 минут
Цитата Сообщение от ForEveR Посмотреть сообщение
В С++14 можно юзать std::logical_and/std::logical_or они constexpr cудя по документации.
Оставил свое, только переделал под один интерфейс.
В gcc 4.9.3 с ключем -std=c++14
всё равно std::logical_and/std::logical_or без constexpr
Печалька.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru