Re[14]: хитрая конструкция
От: Кодт Россия  
Дата: 07.03.15 21:39
Оценка:
Здравствуйте, niXman, Вы писали:

X>стОит отметить, что выражение типа:

X>
X>int v = 0;
X>((void)v);
X>

X>не означает, что v станет типом void. это просто "посыл" компилятору о том, что если v не используется, чтоб он не сообщал об этом.

Как раз означает. Просто у нас не так много возможностей напрямую пообщаться с этим недотипом, не получив ill-formed программу.
Это return в шаблонах и лямбдах с выводом возвращаемого типа, а ещё старый добрый оператор запятая.

На самом деле, с таким же успехом можно любое выражение, содержащее v, написать. Лишь бы побочных эффектов у него не было.
int v = 0;
v; // так
v*0; // или так
sizeof(v); // или так

Но компилятор на это может сказать варнинг: "результат выражения никуда не использован".
Для функций делается попущение
template<class T>
int unused(T const&) { return 0; } // мы-то знаем, что эта функция ничего не делает

void f() {
  int v = 123;
  unused(v); // компилятор не расстраивается, что мы не использовали этот 0
  printf(""); // ведь здесь мы не использовали результат вычисления printf, а он там есть...
Перекуём баги на фичи!
Re[15]: хитрая конструкция
От: niXman Ниоткуда https://github.com/niXman
Дата: 08.03.15 08:08
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Как раз означает.

почему же тогда это int i = v+3; работает? как это возможно, к void прибавить три?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[11]: хитрая конструкция
От: Vain Россия google.ru
Дата: 08.03.15 11:26
Оценка: +4 -2
Здравствуйте, Abyx, Вы писали:

A>и тебя в гугле забанили? попробуй тогда какой-нибудь яндекс или поиск мейл.ру

учись у Кодта объяснять а не гнать людей отсюда
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[11]: хитрая конструкция
От: x-code  
Дата: 08.03.15 12:21
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Как разворачиваются: берётся серия аргументов (параметров шаблона, аргументов функции) и подставляется одним махом.


Похоже на обычные кортежи времени компиляции (tuples) в свойственной С++ извращенной манере
И раскрытие этих "пакетов параметров", как я понимаю, только или пакетом (сразу все) или рекурсивно?
Re[11]: хитрая конструкция
От: Hard_Club  
Дата: 08.03.15 13:23
Оценка:
К> int xs[] = { f<Args>()... }; // подставили каждый элемент Args в выражение — например, в шаблон функции
тут получается массив из результатов вызовов

А что значит это:
void f(...)
Re[12]: хитрая конструкция
От: Hard_Club  
Дата: 08.03.15 13:24
Оценка: -1
во-во
Re[16]: хитрая конструкция
От: wander  
Дата: 08.03.15 14:35
Оценка:
Здравствуйте, niXman, Вы писали:

X>почему же тогда это int i = v+3; работает? как это возможно, к void прибавить три?


Ты как-то забываешь, что приведение не меняет свой операнд. Результат выражения — void. А v остался на месте.
Re[12]: хитрая конструкция
От: Кодт Россия  
Дата: 08.03.15 16:37
Оценка: +1
Здравствуйте, x-code, Вы писали:

XC>Похоже на обычные кортежи времени компиляции (tuples) в свойственной С++ извращенной манере

XC>И раскрытие этих "пакетов параметров", как я понимаю, только или пакетом (сразу все) или рекурсивно?

Вот в этом-то и услада, что сразу всё, а не рекурсивно, как в былые времена.
Плюс, можно делать вещи, которые на рекурсии в принципе невозможны. Массив создать, например. Или функцию с кучей параметров вызвать.
Не, раньше тоже выкручивались, генерировали достаточное количество перегрузок на все разумные случаи арности.
Но это хорошо, когда у тебя есть буст, а у буста есть соответствующие решения.
А тут без буста можно, сразу.
Перекуём баги на фичи!
Re[12]: хитрая конструкция
От: Кодт Россия  
Дата: 08.03.15 16:42
Оценка:
Здравствуйте, Hard_Club, Вы писали:

К>> int xs[] = { f<Args>()... }; // подставили каждый элемент Args в выражение — например, в шаблон функции

H_C>тут получается массив из результатов вызовов

H_C>А что значит это:

H_C>void f(...)

А это значит, что неплохо бы освежить основы языка Си.
printf видел?
int printf(const char* format, ...);

Функция, которая способна принять произвольное количество аргументов, — единственно, она не знает типы этих аргументов и лишь надеется на то, что вызывающая сторона положила туда нужные данные нужных типов в нужном количестве.
Но для функции-заглушки, которая ничего не делает, на содержимое пофиг.
Перекуём баги на фичи!
Re[10]: хитрая конструкция
От: PM  
Дата: 08.03.15 21:18
Оценка:
Здравствуйте, x-code, Вы писали:

К>>Да любым способом утилизировать произвольное количество аргументов.


XC>Что-то эта тема (шаблоны с переменным числом аргументов) как-то вообще мимо меня прошла

XC>Вы можете рассказать хоть что-то поподробнее, как оно вообще работает?
XC>Как такие шаблоны разворачиваются в компиляторе?
XC>Какие есть вообще способы с ними работать?

Посмотри на http://en.cppreference.com/w/cpp/language/parameter_pack там кратко и с достаточными примерами, чтобы понять суть
Re[2]: хитрая конструкция
От: Lonely Dog Россия  
Дата: 10.03.15 07:25
Оценка: -1
Здравствуйте, niXman, Вы писали:

X>может быть ты уже хоть раз прочтешь книжку?!

А может ты перестанешь посылать людей читать книжку? Лень отвечать на простой (для тебя) вопрос, пройди мимо. В чем проблема?
Re[11]: хитрая конструкция
От: Lonely Dog Россия  
Дата: 10.03.15 07:26
Оценка:
Здравствуйте, Abyx, Вы писали:

A>Здравствуйте, x-code, Вы писали:


XC>>Что-то эта тема (шаблоны с переменным числом аргументов) как-то вообще мимо меня прошла

XC>>Вы можете рассказать хоть что-то поподробнее, как оно вообще работает?
XC>>Как такие шаблоны разворачиваются в компиляторе?
XC>>Какие есть вообще способы с ними работать?

A>и тебя в гугле забанили? попробуй тогда какой-нибудь яндекс или поиск мейл.ру

А в гугле/яндексе как эта информация появилась? Кто-то спросил, ему ответили. Почему нельзя спрашивать здесь?

Вообще странно, раньше RSDN был более дружественным, счас народ изменился
Re[12]: хитрая конструкция
От: Hard_Club  
Дата: 10.03.15 10:04
Оценка:
LD>А в гугле/яндексе как эта информация появилась? Кто-то спросил, ему ответили. Почему нельзя спрашивать здесь?

LD>Вообще странно, раньше RSDN был более дружественным, счас народ изменился :)


А в Java ветке вообще
Re[12]: хитрая конструкция
От: Abyx Россия  
Дата: 10.03.15 10:17
Оценка: +1
Здравствуйте, Lonely Dog, Вы писали:

LD>А в гугле/яндексе как эта информация появилась? Кто-то спросил, ему ответили. Почему нельзя спрашивать здесь?


нет, начала написали пропозалы, потом Струструп написал C++11 FAQ, потом это скопировали в википедию на 100 языках,
а потом набежала толпа ленивых нубов, и они начали задавать вопросы, ответы на которые написаны в википедии/FAQ
In Zen We Trust
Re[3]: хитрая конструкция
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.03.15 10:28
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>А может ты перестанешь посылать людей читать книжку?

нэд.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[13]: хитрая конструкция
От: Lonely Dog Россия  
Дата: 10.03.15 11:01
Оценка:
Здравствуйте, Abyx, Вы писали:

A>Здравствуйте, Lonely Dog, Вы писали:


LD>>А в гугле/яндексе как эта информация появилась? Кто-то спросил, ему ответили. Почему нельзя спрашивать здесь?


A>нет, начала написали пропозалы, потом Струструп написал C++11 FAQ, потом это скопировали в википедию на 100 языках,

A>а потом набежала толпа ленивых нубов, и они начали задавать вопросы, ответы на которые написаны в википедии/FAQ
RSDN ценен контентом, а не ответами в стиле "ищи в гугле". Жаль, что ты этого не понимаешь
Re[4]: хитрая конструкция
От: Lonely Dog Россия  
Дата: 10.03.15 11:02
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, Lonely Dog, Вы писали:


LD>>А может ты перестанешь посылать людей читать книжку?

X>нэд.
Печалька
Ну да ничего, может пройдет со временем
Re[14]: хитрая конструкция
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.03.15 11:29
Оценка: :)
Здравствуйте, Lonely Dog, Вы писали:

LD>RSDN ценен контентом, а не ответами в стиле "ищи в гугле". Жаль, что ты этого не понимаешь

понимать это должны те, кто с этого что-то получает
мне, и еще многим, на rsdn просто нас****, ибо выбор огромен
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[5]: хитрая конструкция
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.03.15 11:29
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>Печалька

да нет же, все супер!
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[15]: хитрая конструкция
От: Lonely Dog Россия  
Дата: 10.03.15 11:31
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, Lonely Dog, Вы писали:


LD>>RSDN ценен контентом, а не ответами в стиле "ищи в гугле". Жаль, что ты этого не понимаешь

X>понимать это должны те, кто с этого что-то получает
X>мне, и еще многим, на rsdn просто нас****, ибо выбор огромен
Я редко что-то спрашиваю на RSDN, но часто попадаются интересные дискуссии. Даже на тривиальные вопросы . Т.ч. да, я получаю.

Но дело в не том, не понимаю людей, которые не поленились и ответили в стиле "иди, читай книжки"
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.