История изменений
Исправление
wota,
(текущая версия)
:
если бы задача стояла так, что тебе было бы действительно удобнее сначала связать значения с переменными, и лишь потом с ними работать
потому я и требую конкретные задачи, а не попытку изобразить что-то бесполезное само по себе, т.к. во втором случае начинаются многочисленные «если бы» и претензии
в C++ пришлось бы писать бойлерплейт типа
В лиспе же это всё прячется в одно S-выражение, после чего код становится гораздо нагляднее.
template<class T, class U> inline
void bind_variables( T it, U& head ) {
head = *it++;
}
template<class T, class U, class... Args> inline
void bind_variables( T it, U& head, Args... tail ) {
head = *it;
bind_variables( it++, tail... );
}
#define BIND( c, ... ) \
decltype(c.begin())::value_type __VA_ARGS__; bind_variables( c.begin(), __VA_ARGS__ );
вам стоит подучить С++, вот вам готовый универсальный макрос для объявления и байндинга переменных из любого контейнера, ес-но его можно использовать и в MATCH, правда я так и не услышал ни одной реальной задачи, где вообще это было бы надо, зато наверняка услышу претензии по поводу данного решения
Исправление
wota,
:
если бы задача стояла так, что тебе было бы действительно удобнее сначала связать значения с переменными, и лишь потом с ними работать
потому я и требую конкретные задачи, а не попытку изобразить что-то бесполезное само по себе, т.к. во втором случае начинаются многочисленные «если бы» и претензии
в C++ пришлось бы писать бойлерплейт типа
В лиспе же это всё прячется в одно S-выражение, после чего код становится гораздо нагляднее.
template<class T, class U> inline
void bind_variables( T it, U& head ) {
head = *it++;
}
template<class T, class U, class... Args> inline
void bind_variables( T it, U& head, Args... tail ) {
head = *it;
bind_variables( it++, tail... );
}
#define BIND( c, ... ) \
{ decltype(c.begin())::value_type __VA_ARGS__; bind_variables( c.begin(), __VA_ARGS__ ); }
вам стоит подучить С++, вот вам готовый универсальный макрос для объявления и байндинга переменных из любого контейнера, ес-но его можно использовать и в MATCH, правда я так и не услышал ни одной реальной задачи, где вообще это было бы надо, зато наверняка услышу претензии по поводу данного решения
Исправление
wota,
:
если бы задача стояла так, что тебе было бы действительно удобнее сначала связать значения с переменными, и лишь потом с ними работать
потому я и требую конкретные задачи, а не попытку изобразить что-то бесполезное само по себе, т.к. во втором случае начинаются многочисленные «если бы» и претензии
в C++ пришлось бы писать бойлерплейт типа
В лиспе же это всё прячется в одно S-выражение, после чего код становится гораздо нагляднее.
template<class T, class U> inline
void bind_variables( T it, U& head ) {
head = *it++;
}
template<class T, class U, class... Args> inline
void bind_variables( T it, U& head, Args... tail ) {
head = *it;
bind_variables( it++, tail... );
}
#define BIND( c, ... ) { decltype(c.begin())::value_type __VA_ARGS__; bind_variables( c.begin(), __VA_ARGS__ ); }
вам стоит подучить С++, вот вам готовый универсальный макрос для объявления и байндинга переменных из любого контейнера, ес-но его можно использовать и в MATCH, правда я так и не услышал ни одной реальной задачи, где вообще это было бы надо, зато наверняка услышу претензии по поводу данного решения
Исправление
wota,
:
если бы задача стояла так, что тебе было бы действительно удобнее сначала связать значения с переменными, и лишь потом с ними работать
потому я и требую конкретные задачи, а не попытку изобразить что-то бесполезное само по себе, т.к. во втором случае начинаются многочисленные «если бы» и претензии
в C++ пришлось бы писать бойлерплейт типа
В лиспе же это всё прячется в одно S-выражение, после чего код становится гораздо нагляднее.
template<class T, class U> inline
void bind_variables( T it, U& head ) {
head = *it++;
}
template<class T, class U, class... Args> inline
void bind_variables( T it, U& head, Args... tail ) {
head = *it;
bind_variables( it++, tail... );
}
#define BIND( c, ... ) decltype(c.begin())::value_type __VA_ARGS__; bind_variables( c.begin(), __VA_ARGS__ );
вам стоит подучить С++, вот вам готовый универсальный макрос для объявления и байндинга переменных из любого контейнера, ес-но его можно использовать и в MATCH, правда я так и не услышал ни одной реальной задачи, где вообще это было бы надо, зато наверняка услышу претензии по поводу данного решения
Исходная версия
wota,
:
если бы задача стояла так, что тебе было бы действительно удобнее сначала связать значения с переменными, и лишь потом с ними работать
потому я и требую конкретные задачи, а не попытку изобразить что-то бесполезное само по себе, т.к. во втором случае начинаются многочисленные «если» и претензии
в C++ пришлось бы писать бойлерплейт типа
В лиспе же это всё прячется в одно S-выражение, после чего код становится гораздо нагляднее.
template<class T, class U> inline
void bind_variables( T it, U& head ) {
head = *it++;
}
template<class T, class U, class... Args> inline
void bind_variables( T it, U& head, Args... tail ) {
head = *it;
bind_variables( it++, tail... );
}
#define BIND( c, ... ) decltype(c.begin())::value_type __VA_ARGS__; bind_variables( c.begin(), __VA_ARGS__ );
вам стоит подучить С++, вот вам готовый универсальный макрос для объявления и байндинга переменных из любого контейнера, ес-но его можно использовать и в MATCH, правда я так и не услышал ни одной реальной задачи, где вообще это было бы надо, зато наверняка услышу претензии по поводу данного решения