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

Переменное число аргументов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В одномерном массиве с чётным количеством элементов 2N http://www.cyberforum.ru/cpp-beginners/thread637544.html
#include <iostream> #include <iomanip> #include <vector> #include <cmath> using namespace std; int main() { int n; float a;
C++ Огромный размер массива Как присвоить массиву типу char размер 10100. Или придется писать char mass[1000000... Может есть какая функция, увеличивающая размер массива? http://www.cyberforum.ru/cpp-beginners/thread637530.html
C++ cpp, перегрузка операторов
Здравствуйте. Можете, пожалуйста, объяснить, как, например, перегрузить операцию умножения вида const obj& operator*(double а), только справа. Сам сделал следующее: friend const orbital operator*(double c,const obj&M);.... const obj operator*(double c,const obj&M) { obj m(M); (M.coef)*=c; return m; } Хотелось бы, чтоб оператор принимал double и одну const obj&M и возвращал ссылку.
C++ Подсчитать количество пар
Дан массив чисел а1,...,аn. Выяснить, имеются ли в данном массиве два идущих подряд положительных элемента. Подсчитать количество таких пар.
C++ В упорядоченном по убыванию массиве найти разность между наименьшим значением и последним элементом, большим Р http://www.cyberforum.ru/cpp-beginners/thread637464.html
В упорядоченном по убыванию массиве найти разность между наименьшим значением и последним элементом, большим Р.
C++ Факториал Дано целое число N (> 0). Найти двойной факториал N: N!! = N•(N–2)•(N–4)•… (последний сомножитель равен 2, если N — четное, и 1, если N — нечетное). Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и вывести его как вещественное число. Помогите пожалуйста с задачей подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
15.08.2012, 15:19     Переменное число аргументов
Pure, Ну тут нет перепаковки. Рейндж используется исключительно для индексов.
~OhMyGodSoLong~, Ну да. Слом на этапе компиляции - это не так уж и плохо. Можно конечно SFINAE задействовать как-нибудь... Ща поковыряюсь ради интереса. Ну рефлексию-то очень даже предлагают ввести (говорил Страуструп что-то на эту тему). А так конечно с динамическими языками не сравнится.

Добавлено через 1 час 25 минут
Ну как-то так, но не сомневаюсь что можно и проще.

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
#include <boost/mpl/range_c.hpp>
#include <boost/mpl/for_each.hpp>
#include <tuple>
#include <iostream>
 
template<typename T, size_t Idx, typename Enabled = void>
struct is_printable
{
   static constexpr bool value = false;
};
 
template<typename T, size_t Idx>
struct is_printable<T, Idx,
   typename std::enable_if<std::is_lvalue_reference<decltype(std::cout << std::get<Idx>(T()))>::value>::type>
{
   static constexpr bool value = true;
};
 
template<typename T>
struct func
{
   func(const T& arg):
      seq(arg)
   {
   }
 
   template<typename U, typename Enabled = void>
   struct func_impl
   {
      template<typename Seq>
      static void apply(const Seq& seq) { }
   };
 
   template<typename U>
   struct func_impl<U, typename std::enable_if<is_printable<T, U::value>::value>::type>
   {
      template<typename Seq>
      static void apply(const Seq& seq) { std::cout << std::get<U::value>(seq) << std::endl; }
   };
 
   template<typename U>
   void operator () (const U&)
   {
      func_impl<U>::apply(seq);
   }
 
   T seq;
};
 
struct A
{
};
 
struct B
{
};
 
int main()
{
   auto t = std::make_tuple(A(), 1, 2, "hello", B(), 5.6);
   boost::mpl::range_c<int, 0, std::tuple_size<decltype(t)>::value> range;
   boost::mpl::for_each<decltype(range)>(func<decltype(t)>(t));
}
http://liveworkspace.org/code/6ecd7f...15e4b4bc39897b
 
Текущее время: 12:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru