Tag: C++-CONCEPTS
Estoy aprendiendo los conceptos de C++20. ¿Hay alguna forma de hacer una conjunción de conceptos en su lugar antes de un auto? Por ejemplo, si tengo un concepto MutableGraph<g> y un concepto VertexListGraph<g>, podría definir: template <typename g=””> concept MutableVertexListGraph = MutableGraph<g> && VertexListGraph<g>; y hacer: MutableVertexListGraph auto g = . . . Read more
Este código funciona y devuelve un iterador a foo{5} desde el vector: struct foo { int value; }; auto main() -> int { auto ints = std::vector<foo>{{3}, {2}, {5}, {6}, {7}, {0}, {4}, {6}}; std::ranges::sort(ints, {}, &foo::value); auto it = std::upper_bound( ints.begin(), ints.end(), 4, [](const int v, const foo f) . . . Read more
Entonces, estoy tratando de crear un concepto que verifica si una estructura/clase tiene el método de plantilla void func(auto). struct S { void func(auto param) { // Hacer cosas … } }; Struct S no tiene ningún parámetro de plantilla, pero su miembro sí. Paso mi parámetro de plantilla al . . . Read more
Supongamos que tenemos una clase para la cual queremos definir amigos ocultos, por ejemplo, operadores de comparación heterogénea: #include <concepts> template <typename t=””> struct S; template <typename c=””> constexpr bool is_S = false; template <typename t=””> constexpr bool is_S<><t>> = true; template <typename t=””> struct S { using type = . . . Read more
C++ tiene una limitación molesta que es imposible pasar funciones sobrecargadas a plantillas, por ejemplo std::max no se puede usar correctamente con std::transform. Estaba pensando que sería bueno si los conceptos pudieran resolver esto, pero en mis intentos me encontré con el mismo problema. Parece que los conceptos no pueden . . . Read more