LINUX.ORG.RU

Зачем тянуть всякое постороннее в c++?

 ,


0

5

И делать из него большее, чем C с классами, что всегда и являлось его главным предназначением?

Он и так перегружен, а теперь из него делают какого-то мутанта, добавляя всякие лямбда.

В обычном C++, если ты передаешь глобальную переменную, или указатель, или ссылку в функцю, и используешь ее там локально, ты не получишь ошибок вида «X is not captured».

Перемещено mono из talks

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 1)

В обычном C++, если ты передаешь глобальную переменную, или указатель, или ссылку в функцю, и используешь ее там локально, ты не получишь ошибок вида «X is not captured».

Ага, получишь сегфолт, если повезет.

И делать из него большее, чем C с классами, что всегда и являлось его главным предназначением?

Он и так перегружен, а теперь из него делают какого-то мутанта, добавляя всякие лямбда.

Затем, что C с классами - почти такое же говно, как и C.

hlebushek ★★
()

добавляя всякие лямбда.

Только из криокамеры?

Зачем? Потому что оно удобно и востребовано. Не нравится - не используй (можно язык в целом).

DarkEld3r ★★★★★
()
Ответ на: комментарий от hlebushek
some_type x;

foo()
{
    some_function(x);
}

main()
{
  foo();
}

-все ок.

some_type x;

foo(some_type ax)
{
    some_function(ax);
}

main()
{
  foo(x);
}

 — ругается «ax is not captured». Ну и нафига такое тянуть в и так перегруженного монстра?

cvs-255 ★★★★★
() автор топика

C с классами

Хватит повторять этот бред, оброненный каким-то наркоманом. С таким же успехом можно и про Java сказать что это «C с классами».

fenris ★★★★★
()
Ответ на: комментарий от cvs-255

— ругается «ax is not captured».

Что-то ты недоговариваешь.

Stil ★★★★★
()

Показывай весь код.

m0rph ★★★★★
()

AFAIK в C++ лямбды никак не продляют жизнь переменных, так что концептуально ничего в программировании на С++ не меняется. Судя по описанию, у тебя ошибка в том, что ты в лямбде используешь какую-то «внешнюю» переменную, не объявив своих намерений.

staseg ★★★★★
()

Я с тобой полностью согласен, чувак. Нужно C++ выкинуть на помойку и использовать нормальный язык, а не насиловать труп.

hateyoufeel ★★★★★
()

ТС, ты или обкурился или никогда в жизни в сознание не приходил. Лямбды ничего не усложняют, а наоборот очень сильно упрощают. Если тебе чего-то не понятно, то спрашивай на понятном языке - тебе объяснят.

asaw ★★★★★
()
Ответ на: комментарий от hateyoufeel

Нужно C++ выкинуть на помойку и использовать нормальный язык

Который махом обрастет теми же лямбдами и станет точно таким же.
Шило на мыло, если уж куда то метаться и надо, то сразу в сторону низкоуровневых языков.

uin ★★★
()
Ответ на: комментарий от cvs-255

Если предположить, что твой код до валидного C++ кода дополняется дописыванием void в сигнатуре foo и main, то вообще непонятно, где и причем тут лямбды?

hlebushek ★★
()
Ответ на: комментарий от uin

В самих лямбдах ничего плохого нет.
А вот плюсы с темплейтами и лямбдами, да stl-синтаксисом довольно быстро становится языком, для парсинга которого нужен определенный тип мышления.

Solace ★★
()
Ответ на: комментарий от uin

Который махом обрастет теми же лямбдами и станет точно таким же.

Не обрастёт, если они в этом языке есть изначально, а не приделаны кое-как спустя 30 лет.

hateyoufeel ★★★★★
()

Зачем тянуть всякое постороннее в c++?

неосилятор детектед

C с классами, что всегда и являлось его главным предназначением?

С++ — это С с шаблонами и экзепшенами, а классы в С, по факту, есть

next_time ★★★★★
()

унылый троллинг.

x0r ★★★★★
()
Ответ на: комментарий от cvs-255

в предсталенном виде — звездёшь. даже если забыть, что пример даже не скомпилируется из-за отсутствия возвращаемого типа у функций

next_time ★★★★★
()
Ответ на: комментарий от Gvidon

определил переменную, вероятно. вангую, что ТС, попросту, обратился ко глобальной переменной без её предварительного определения.

next_time ★★★★★
()
Ответ на: комментарий от next_time

Саму идею эта фраза характеризует целиком. Язык с абстракциями, с возможностью опуститься на низкий уровень + быстродействие Си.

Solace ★★
()
Ответ на: комментарий от cvs-255

Не получилось воспроизвести.

#include <iostream>

using namespace std;

int x;

void some_function(int ax)
{
    cout << "some_function" << endl;   
}

void foo(int ax)
{
    some_function(ax);
}

int main()
{
    foo(x);
    return 0;
}
user@workstation [~/tmp]
>$ g++ test.cpp 
user@workstation [~/tmp]
>$ ./a.out 
some_function
user@workstation [~/tmp]
>$ 

WRG ★★★★
()
Ответ на: комментарий от trex6

так код не мой, разбираюсь в чужом постепенно.

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

И чего такого оттуда надо взять чтобы стало страшно? Хэндлер какой-нить? Если что-то не работает и стало страшно - почитай документацию, там написано почему не работает. А ещё лучше документацию почитать в начале.

asaw ★★★★★
()
Ответ на: комментарий от next_time

в каком году? это имеет принципиальное значение.

Видимо когда его создал. Но я со свечкой не стоял.

andreyu ★★★★★
()

И делать из него большее, чем C с классами, что всегда и являлось его главным предназначением?

Ты не осилил? Завидовать не хорошо.

Он и так перегружен, а теперь из него делают какого-то мутанта, добавляя всякие лямбда.

Вот как раз теперь-то он разгружен и намного более читаемый.

invy ★★★★★
()
Ответ на: комментарий от next_time

Это не бред. Си с классами - это нечто примитивное, реализующее только самые основы ООП. Такое возможно даже на чистом Си при помощи макросов и чёрной магии, например, динамического создания «гаджетов» (это вообще термин из ROP, но...), передающих указатели на this. А современный Си++ - это мультипарадигменный монстр Франкенштейна.

Deleted
()
Ответ на: комментарий от andreyu

в том году не было, как минимум, шаблонов и ещё много чего. в то время его ещё можно было назвать С с классами, сейчас — уже нет.

next_time ★★★★★
()

Попытка сделать из плюсов нормальный язык, плюс итераторы.

quantum-troll ★★★★★
()
Ответ на: комментарий от next_time

в том году не было, как минимум, шаблонов

лол, не смешите, у меня книжка по С++ 2008 года и там целая глава посвященная шаблонам.

FIL ★★★★
()

Ну мне тоже не нравиться stl синтаксис и шаблонный синтаксис, но я ж не плачу. Привет С.
p.s. шаблоны так и не осилил, пока...

FIL ★★★★
()
Последнее исправление: FIL (всего исправлений: 1)

«X is not captured»

А где получишь? В лямбдах?

FIL ★★★★
()
Ответ на: комментарий от next_time

И при чем тут срок тухлости?
Ты говоришь, что в прошлом году шаблонов не было, я говорю что были. ПРОФИТ?

через 20 лет

Чо, серьезно? О_о 1988. Пахнет обманом...

FIL ★★★★
()
Последнее исправление: FIL (всего исправлений: 1)
Ответ на: комментарий от next_time

Трэд не читай, ответы писай... Извиняюсь.

FIL ★★★★
()

И при чем тут блямбы, если ты сам, баран, копируешь какое-то неведомое говно? Не лезь в плюсы, туповат ты для них.

anonymous
()

Зачем тянуть всякое постороннее в native C??

darkenshvein ★★★★★
()
Ответ на: комментарий от cvs-255

Ну придумай похожий, на котором твои глюки есть, хотя их быть не должно. А если не сможешь - либо гонишь, либо ищи ошибку в своей проприетарщине.

peregrine ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.