Resultados de la búsqueda a petición "language-lawyer"

3 la respuesta

¿Cuál es la relación entre los estándares C y C ++?

Estaba escribiendoesta respuesta [https://stackoverflow.com/questions/5539249/why-transforms-begin-s-end-s-begin-tolower-cant-be-complied-successfu/37438120#37438120] y cité ...

1 la respuesta

¿El mandato estándar enable_shared_from_this se hereda públicamente? ¿Por qué?

Es común heredar deenable_shared_from_this solo para poder regresarshared_ptr's de las funciones de los miembros como la intención principal, sin intención de exponerenable_shared_from_this API en la clase derivada. Desde hacer uso ...

8 la respuesta

¿Por qué la operación de desplazamiento a la izquierda invoca Comportamiento indefinido cuando el operando del lado izquierdo tiene un valor negativo?

En C, la operación de desplazamiento a la izquierda en modo bit invoca el comportamiento indefinido cuando el operando del lado izquierdo tiene un valor negativo. Cita relevante de ISO C99 (6.5.7 / 4) El resultado de E1 << E2 es E1 posiciones ...

2 la respuesta

¿Cuándo un constructor privado no es un constructor privado?

Digamos que tengo un tipo y quiero que su constructor predeterminado sea privado. Escribo lo siguiente: class C { C() = default; }; int main() { C c; // error: C::C() is private within this context (g++) // error: calling a private constructor ...

4 la respuesta

¿Son los iteradores no desreferenciados más allá del iterador de "un pasado al final" de un comportamiento indefinido de matriz?

Dadoint foo[] = {0, 1, 2, 3}; Quiero saber si los iteradores que apuntan más allá del "un pasado" no son válidos. Por ejemplo:auto bar = cend(foo) + 1; Hay un montón de quejas y advertencias de que este es un "comportamiento indefinido" en ...

1 la respuesta

¿Está permitido que la implementación de la biblioteca estándar tenga una definición de clase que sea diferente del estándar C ++?

El siguiente código se compiló correctamente con clang y MSVC pero no se compila en GCC 6.1.0. #include <memory> template<typename R, typename T, typename... Args> T* test(R(T::*)(Args...) const) { return nullptr; } int main() { using T ...

1 la respuesta

Parcialmente especializado en parámetros de plantilla que no son de tipo incorrecto

Considera lo siguiente: template <unsigned > struct uint_ { }; template <class > struct X { static constexpr bool value = false; }; template <int I> // NB: int, not unsigned struct X<uint_<I>> { static constexpr bool value = true; }; int main() ...

6 la respuesta

¿Es legal eludir el constructor de una clase o resulta en un comportamiento indefinido?

Considere el siguiente código de muestra: class C { public: int* x; }; void f() { C* c = static_cast<C*>(malloc(sizeof(C))); c->x = nullptr; // <-- here }Si tuviera que vivir con la memoria no inicializada por alguna razón (por supuesto, si ...

3 la respuesta

Tipo de retorno del operador condicional y búsqueda en dos fases

Considere el siguiente fragmento: struct Base { }; struct Derived : Base { }; void f(Base &) { std::cout << "f(Base&)\n"; } template <class T = int> void g() { Derived d; f(T{} ? d : d); // 1 } void f(Derived &) { std::cout << "f(Derived&)\n"; } ...

2 la respuesta

¿Puede un objeto tener más de un tipo efectivo?

Considere el siguiente código en una plataforma donde el ABI no inserta relleno en las uniones: union { int xi; } x; x.xi = 1;Creo que la segunda línea exhibe un comportamiento indefinido ya que viola la estricta regla de alias: El objeto al ...