Preguntas etiquetadas con language-lawyer

Para preguntas sobre las complejidades de las especificaciones formales o autorizadas de los lenguajes y entornos de programación.


3
¿Está bien devolver el valor del argumento predeterminado por referencia constante?
¿Está bien devolver el valor del argumento predeterminado por referencia constante como en los ejemplos a continuación: https://coliru.stacked-crooked.com/a/ff76e060a007723b #include <string> const std::string& foo(const std::string& s = std::string("")) { return s; } int main() { const std::string& s1 = foo(); std::string s2 = foo(); const std::string& s3 = foo("s"); std::string s4 …




3
Conceptos de C ++ 20: ¿Qué especialización de plantilla se elige cuando el argumento de plantilla califica para múltiples conceptos?
Dado: #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "integral" << std::endl; } }; int main() { wrapper<int> w; …

3
Diferencia de comportamiento de la captura mutable de la función lambda a partir de una referencia a la variable global
Descubrí que los resultados son diferentes entre los compiladores si uso un lambda para capturar una referencia a una variable global con una palabra clave mutable y luego modifico el valor en la función lambda. #include <stdio.h> #include <functional> int n = 100; std::function<int()> f() { int &m = n; …





4
Conversión implícita no permitida al regreso
#include <optional> bool f() { std::optional<int> opt; return opt; } No compila: 'return': cannot convert from 'std::optional<int>' to 'bool' Consulta de referencia Pensé encontrar una explicación, pero la leí, ya que debería estar bien. Las conversiones implícitas se realizan cada vez que se usa una expresión de algún tipo T1 …

1
¿Por qué {} como argumento de función no conduce a la ambigüedad?
Considera este código: #include <vector> #include <iostream> enum class A { X, Y }; struct Test { Test(const std::vector<double>&, const std::vector<int>& = {}, A = A::X) { std::cout << "vector overload" << std::endl; } Test(const std::vector<double>&, int, A = A::X) { std::cout << "int overload" << std::endl; } }; int …

4
¿Es válido usar std :: transform con std :: back_inserter?
Cppreference tiene este código de ejemplo para std::transform: std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); Pero también dice: std::transformno garantiza la aplicación en orden de unary_opo binary_op. Para aplicar una función a una secuencia en orden o para aplicar una función que modifique …


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.