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

[дизайн и эволюция] провалы в variadic конструкторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести 10 самых длинных (по числу символов) предложений http://www.cyberforum.ru/cpp/thread1637394.html
Ребят программисты помогите, понимаю что программа легкая. Но не могу сделать. Текст надо считать из файла.
C++ Найти причины и способы устранения ошибки Во время откладки указатель на число выдает мусор типо -81791524 #include <stdlib.h> #include <time.h> #include <iostream> #include <conio.h> #include <cctype> using::std::cin; using::std::cout; using::std::endl; http://www.cyberforum.ru/cpp/thread1637383.html
Как лучше всего пробежать все элементы контейнера? C++
Речь о следующем. Есть vector. Я хочу пробежать все его элементы, но походу я буду проверять удовлетворяют они определенному условию или нет. Если да, то этот элемент удаляется. Как это лучше всего реализовать?
C++ Найти сумму ряда
Ребят, голову ломаю и никак не осилю. В чем смысл вообще? Я понять формулу даже не могу, не то что уж код написать здесь. Какие-то "-...+". Что это вообще? Помогите кто чем может.
C++ Вычислить произведение отрицательных элементов массива http://www.cyberforum.ru/cpp/thread1637347.html
Приветствую вас дорогие форумчане. Прошу о помощи в изменении программы. В коде предоставленном ниже требуется заменить: рандомный подбор чисел на вводимый. Зарание спасибо! (Текст задания: В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1.) произведение отрицательных элементов массива; 2.) сумму положительных элементов массива, расположенных до максимального элемента....
C++ Реализовать структуру "Student" Создайте программу для ввода и вывода фамилий и оценок студентов. Введите не менее 10 студентов. Отберите студентов, у которых вторая и четвертая оценка 2 подробнее

Показать сообщение отдельно
hoggy
5719 / 2310 / 417
Регистрация: 15.11.2014
Сообщений: 5,157
Завершенные тесты: 1
02.08.2016, 11:48  [ТС]     [дизайн и эволюция] провалы в variadic конструкторы
Цитата Сообщение от Croessmah Посмотреть сообщение
Как вариант:
наследование не умеет:
http://rextester.com/NJA95237

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
#include <type_traits>
#include <iostream>
 
namespace details{
    template <class ...T> struct is_same_one;
        
    template <class T>
    struct is_same_one<T> {
        static constexpr bool value = false;
    };
     
    template <class T, class U, class... Args>
    struct is_same_one<T, U, Args...> {
        static constexpr bool value = (sizeof...(Args) == 0) && std::is_same<std::decay_t<T>, std::decay_t<U>>();
    };
}
 
 
namespace variadic {
 
struct plasma {
    template<typename...Arg, typename = std::enable_if_t<!details::is_same_one<plasma, Arg...>::value, void>*>
    plasma(Arg&&...args) {
        std::cout<<"variadic construct\n" ;
    }
    
    //plasma() { std::cout<<"construct\n"; }
    plasma(const plasma& rhs) { std::cout<<"copy construct\n"; }
    plasma(plasma&& rhs) { std::cout<<"move construct\n"; }
};
    
    
struct der: plasma
{
    der(const int a):plasma(a){}
    der(const int a, const int b):plasma(a,b){}
    der(const der& rhs):plasma(rhs){}
    der(der&& rhs):plasma(std::move(rhs)){}
    
    der():plasma(){}
};    
 
}
 
int main() {
        variadic::plasma pls(8);
        const variadic::plasma plss = std::move(pls);
        variadic::plasma plsss = plss;
        variadic::plasma plssss;
        variadic::plasma plsssss;
        variadic::plasma plssssss(std::move(plss));
        variadic::plasma plsssssss(std::move(plsssss));
    
    {
        variadic::der pls(8);
        const variadic::der plss = std::move(pls);
        variadic::der plsss = plss;
        variadic::der plssss;
        variadic::der plsssss;
        variadic::der plssssss(std::move(plss));
        variadic::der plsssssss(std::move(plsssss));
        
    }
    
    
}
output:
variadic construct
move construct
copy construct
variadic construct
variadic construct
copy construct
move construct
variadic construct
variadic construct
variadic construct
variadic construct
variadic construct
variadic construct
variadic construct
Добавлено через 2 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
В моем коде для поддержки такого случая
нужно будет использовать is_base_of вместо is_same:
http://rextester.com/NQJ1094
интересный вариант)
 
Текущее время: 11:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru