Size: a a a

2020 September 02

CD

Constantine Drozdov in pro.cxx
выглядит как недоработка, первое можно транслировать во второе автоматически
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
Вопрос по концептам.
Есть у меня
template <class T> concept foo = ...;
Почему запретили писать
template <foo T> concept bar = ...;
или
template <class T> requires foo<T> concept bar = ...;
(gcc говорит error: a concept cannot be constrained), вынудив вместо этого писать
template <class T> concept bar = foo<T> && ...;
?
Чем руководствовались при добавлении этого требования?
вообще есть некоторая неоднозначность - обычно нарушение constaint в этом месте ошибка компиляции, нет?
источник

АК

Александр Караев... in pro.cxx
Constantine Drozdov
вообще есть некоторая неоднозначность - обычно нарушение constaint в этом месте ошибка компиляции, нет?
в этом месте - это внутри <>?
вообще да, логично.. т.е. если мой класс не удовлетворяет foo, то концепт просто будет отброшен, а не вычислится как false
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
в этом месте - это внутри <>?
вообще да, логично.. т.е. если мой класс не удовлетворяет foo, то концепт просто будет отброшен, а не вычислится как false
угу, но наверное можно первое считать эквивалентом второго
источник

АК

Александр Караев... in pro.cxx
Constantine Drozdov
угу, но наверное можно первое считать эквивалентом второго
да, так и есть (ну, в других контекстах, где это валидно)
вопрос исчерпан, спасибо
источник

D

Danya in pro.cxx
Александр Караев
Вопрос по концептам.
Есть у меня
template <class T> concept foo = ...;
Почему запретили писать
template <foo T> concept bar = ...;
или
template <class T> requires foo<T> concept bar = ...;
(gcc говорит error: a concept cannot be constrained), вынудив вместо этого писать
template <class T> concept bar = foo<T> && ...;
?
Чем руководствовались при добавлении этого требования?
Шаблонные параметры концептов нельзя констрейнить
источник

D

Danya in pro.cxx
Danya
Шаблонные параметры концептов нельзя констрейнить
источник

АК

Александр Караев... in pro.cxx
Danya
Шаблонные параметры концептов нельзя констрейнить
это ты мне перевёл ошибку компилятора, фактически, вопрос был в том почему их нельзя констрейнить?
и мы уже нашли причины чуть ниже по диалогу
источник

D

Danya in pro.cxx
Александр Караев
это ты мне перевёл ошибку компилятора, фактически, вопрос был в том почему их нельзя констрейнить?
и мы уже нашли причины чуть ниже по диалогу
Ок)
источник

АК

Александр Караев... in pro.cxx
кстати, https://stackoverflow.com/a/53684992 - тот же вывод, к которому мы пришли
источник

VU

Vadim Ushakov in pro.cxx
Кто-нибудь использовал тернарный оператор с execution_policy? Хотелось бы иметь что-то вроде
auto ex_pol = vec.size() < 2 ? std::execution::seq : std::execution::par;
std::for_each( ex_pol, vec.begin(), vec.end(), ... );
источник

ПК

Побитый Кирпич... in pro.cxx
Vadim Ushakov
Кто-нибудь использовал тернарный оператор с execution_policy? Хотелось бы иметь что-то вроде
auto ex_pol = vec.size() < 2 ? std::execution::seq : std::execution::par;
std::for_each( ex_pol, vec.begin(), vec.end(), ... );
На рантайм условии (как у тебя) так не получится
источник

ПК

Побитый Кирпич... in pro.cxx
На компайл тайм условии можно сделать через std::conditional
источник

АК

Александр Караев... in pro.cxx
Vadim Ushakov
Кто-нибудь использовал тернарный оператор с execution_policy? Хотелось бы иметь что-то вроде
auto ex_pol = vec.size() < 2 ? std::execution::seq : std::execution::par;
std::for_each( ex_pol, vec.begin(), vec.end(), ... );
bool is_par = ...
if (is_par)
 std::for_each(..)
else
 std::for_each(..)
источник

VU

Vadim Ushakov in pro.cxx
Александр Караев
bool is_par = ...
if (is_par)
 std::for_each(..)
else
 std::for_each(..)
Так и сделал, но думалось, что можно и красивее
источник

VU

Vadim Ushakov in pro.cxx
Побитый Кирпич
На компайл тайм условии можно сделать через std::conditional
Спасибо, жаль.
источник

АК

Александр Караев... in pro.cxx
Vadim Ushakov
Так и сделал, но думалось, что можно и красивее
Можно, но это будет некоторый вспомогательный код
источник

VU

Vadim Ushakov in pro.cxx
Александр Караев
Можно, но это будет некоторый вспомогательный код
Мне в рантайме нужно решать, как выполнять цикл, выше сказали, что нет такого способа, если знаешь и там строк 10, напиши, будет любопытно, как минимум
источник

AT

Anatoly Tomilov in pro.cxx
contextual conversion — это implicit или explicit? Или что-то отдельное?
источник

АК

Александр Караев... in pro.cxx
Vadim Ushakov
Мне в рантайме нужно решать, как выполнять цикл, выше сказали, что нет такого способа, если знаешь и там строк 10, напиши, будет любопытно, как минимум
самый простой вариант:
template <class It, class F>
void for_each(std::variant<decltype(std::execution::seq), decltype(std::execution::par)> policy, It begin, It end, F&& callback) { /* visit или get_if */ }
источник