Tag: LANGUAGE-LAWYER
Considere las siguientes cuatro lambdas: #include <type_traits> const auto f1 = auto mutable {}; // const, mutable, genérica const auto f2 = auto {}; // const, genérica const auto f3 = int mutable {}; // const, mutable auto f4 = auto mutable {}; // mutable, genérica static_assert(std::is_invocable_v<decltype(f1), int=””>); // fallido . . . Read more
Considere este código: class Base { public: int foo(int x) const { return 2*x; } }; class Derived : Base { public: using Base::foo; }; Ahora, Derived tiene un método foo público y se puede llamar: Derived d; d.foo(2); // compila (como debería) Sin embargo, no puedo hacer nada si . . . Read more
Intenté usar std::is_invocable en el siguiente fragmento de código disponible en godbolt. #include <type_traits> struct A { void operator()(int); }; struct B { void operator()(int, int); }; struct C : A, B {}; int main() { static_assert(std::is_invocable<a, int=””>() == true); static_assert(std::is_invocable<b, int=””>() == false); static_assert(std::is_invocable<c, int=””>() == true); } Clang . . . Read more
Quiero utilizar bytes contiguos fijos de una matriz de bytes larga s como claves en un std::map<><char,n>,int>. ¿Puedo hacer esto sin copiar al reinterpretar submatrices de s como std::array<char,n>? Aquí hay un ejemplo mínimo: #include <map> int main() { std::map<><char,10>,int> m; const char* s=”Some long contiguous data”; // reinterpretar 10 . . . Read more
Si una plantilla de función está marcada como eliminada, ¿se permite instanciarla explícitamente como en el ejemplo: template<class t=””> int foo(T) = delete; El siguiente código: template int foo(int); Clang y GCC lo permiten, mientras que MSVC muestra el siguiente error: error C2280: ‘int foo<int>(int)’: intento de hacer referencia a . . . Read more