Вот ещё вопрос возник про vardic templates.
Например, если мне нужна функция переменной арности от однотипных аргументов, то я могу записать
C++ Source Code:
1
template<typename ...ids>
2
void foo (const ids&... args){
3
for(auto& arg: {args...}){
4
/* do stuff with arg*/
5
}
6
}
А можно ли эту конструкцию как-то специализировать для конкретного нетривиального типа под многоточием? Например, я хочу передавать в функцию, пускай, tuple<int,char*,float> — можно-ли написать это в единой конструкции, без привлечения прокси-шаблонов?
thambs писал: А может кто ни будь пояснить, почему ptr не изменяется в результате?
ну почему жы, он меняется в результате. Но этот результат доступен только внутри самой функции, ты же скопировал указатель в аргумент. Вот он в аргументе и поменялся. А чтобы поменялся снаружи тебе нужен указатель на указатель или ссылка на указатель.
Цитата:
XaeroX писал: Так, безусловно, тоже можно, но выглядит менее красиво
меня удалбывает внутри функции постоянно писать *ptr, некрасиво.
Дядя Миша писал: меня удалбывает внутри функции постоянно писать *ptr, некрасиво.
А не надо постоянно, достаточно написать это один раз.
Мне вообще эта функция не нравится. Какая-то она неправильная, ненормально это - модифицировать тут же и какой-то self, и входные данные, которые внезапно становятся выходными.
thambs
Прочитал только заголовок, т.к. статья слишком страшно выглядит.
Если это то, о чём я подумал, то в Волатиле это лечится "-fno-strict-aliasing" во всех модулях.
thambs эти статьи всегда берут какой-то сферический пример.
Пусть на реальном покажут. Я не знаю как этот эффект правильно называется, но он присущ любому семейству компиляторов, что на искуственно выдуманной конструкции может случится фейл, тогда как на реальных сложнешийх примерах всё в порядке. Более того - баг только на этих примерах и проявляется. Вот я компилятор bsp тестировал на таких вот примерах. Ну и что? вылетел на комнатке из пяти брашей. А сипульчер прекрасно собирается. Эти статьи - они в первую очередь нужны тем, кто компиляторы пишет, ну в качестве багрепортов. Нахрена это пользователю.