Tag: VARIADIC-TEMPLATES
He diseñado una clase de envoltorio más simple que añade una etiqueta a un objeto, con la intención de que sea convertible/reemplazable implícitamente por el objeto envuelto. #include <string> #include <type_traits> #include <utility> template < typename T, typename Key = std::string > class myTag{ T val; public: Key key; template . . . Read more
Estoy trabajando en la implementación de C++20 de tuple: template<size_t INDEX, typename T> struct wrap { [[no_unique_address]] T data {}; }; template<typename…> class base {}; template<size_t… INDEX, typename… Ts> class base<index_sequence<INDEX…>, Ts…> : public wrap<INDEX, Ts>… { public: constexpr base( const Ts &… args ) : /* !! AQUÍ DEBE . . . Read more
Estoy tratando de crear una clase (similar a std::tuple) que pueda contener un número variable de referencias a objetos de diferentes tipos y que pueda reenviar una llamada a una función miembro específica a todos sus constituyentes. Aquí hay un ejemplo: “` c++ // g++ Test7.C -std=c++17 -o Test7 <h1>include . . . Read more
Tengo lo siguiente: template<typename …Ts, typename U, typename=void> void valid(Ts…, U){} int main() { valid(1.0, 1, 2, 3); } clang se queja: note: la función candidata [con Ts = <>, U = double, $2 = void] no es viable: requiere 1 argumento, pero se proporcionaron 4 void valid(Ts…, U){} ^ . . . Read more
Acabo de encontrar este fragmento de código en un archivo de Programa (C++): $template <typename blah, typename… Args> const <some-type> bof(<some-parameters>, Args&&… args) const { return breck(std::forward<Args>(args)…); }$ Me pregunto: 1) ¿qué son los tres puntos después de typename? 2) Parece intuitivamente que de esta manera podemos pasar múltiples argumentos. . . . Read more