Tag: C++-CONCEPTS
Intento probar durante la compilación si dos tipos son comparables en igualdad, y he definido operator== para ellos, así que deberían serlo. Sin embargo, el siguiente código no se compila: #include <string_view> struct A { int n; }; bool operator==(const A& a, const std::string_view s) { return a.n == s.size(); . . . Read more
Me gustaría declarar una función similar a la siguiente: string concat(const range<string> auto& strings); He logrado lo mismo a través de lo siguiente: template <template></template><typename> typename T> requires range<><string>> string concat(const T<string>& strings); Pero esto es demasiado pesado y repetitivo para considerarlo como utilización. ¿Existe una forma más limpia? Supongo . . . Read more
Estoy preguntándome cómo se define std::same_as y cómo lo usamos en un concepto o requisito. Ejemplo: void f1() { } bool f2() { return true; }</p> <p>template < typename T> void Do( T func ) { if constexpr ( requires { { func() } -> std::same_as<bool>; } ) {<br> std::cout . . . Read more
Estoy tratando de programar una tarea de flujo de aire DAG. Programé según el siguiente código: Task1 >> [Task2, Task3] >> Task4 Luego, esperaba que se ejecutara Task4 una sola vez, cuando Task2 y Task3 hubieran terminado. Pero… creo que Task4 se ejecutó dos veces. (task1 -> task2 -> task4) . . . Read more
Tengo una plantilla de clase tipo tupla como esta: template<class… t=””> struct Foo {} Ahora necesito implementar algo así: template<class t=””> void bar (const T&t) { if constexpr (IsFoo<T>::value) // trátalo como Foo else // una solución genérica } IsFoo puede implementarse de manera directa así: template <class t=””> struct . . . Read more