initializer-list
deducción de lista de inicialización y tipo de plantilla
Considere la función:
template<typename T>
void printme(T&& t) {
for (auto i : t)
std::cout << i;
... sto:
const auto il = {'a', 'b', 'c'};
printme(il);
O
printme<std::initializer_list<char>>({'a', 'b', 'c'});
static assert on initializer list:: size()
¿Por qué no se permite std::initializer_list::size en un static_assert, aunque esté declarado como constexpr en mi libstdc++ ... lic:
constexpr int size() { return 5; }
};
int main()
{
A a;
static_assert(a.size() == 4, "oh no!");
return 0;
}
C++ vector de matrices
¿por Qué funciona esto:
std::pair<int, int> p = {1,2};
std::vector<std::pair<int, int>> vp = { {1,2}, {3, ... falla con:
Error: no se pudo convertir ‘{{1, 2}, {3, 4}}’ a ‘std::vector<std::array<int, 2u> >’
Gracias
Diferencia de inicialización con o sin llaves en C++11
Podemos inicializar la variable de dos maneras en C++11
Uno:
int abc = 7;
Dos:
int abc {7};
¿Cuál es la diferencia entre estos dos métodos?
¿Cómo los trata el compilador de manera diferente o la forma en que se ejecutan estos códigos?
Ámbito de una variable inicializada en la lista de parámetros de una función
El siguiente código construye, compila y ejecuta (C++, mingw) aparentemente sin ningún problema. Sin embargo, ¿estoy garanti ... << std::endl;
}
int main()
{
foo({4,5}); // <-- What is the scope of the struct initialized here?
return 0;
}
duración de una std:: valor de retorno de la lista de inicializadores
La implementación de GCC destruye un array std::initializer_list devuelto por una función al final de la expresión completa d ... po de retorno lambda solo ocurre cuando se devuelve una expresión, y una lista de inicio entre corchetes no es una expresión.
¿Puedo hacer referencia a Miembros Anteriores de una Lista Inicializadora?
Digamos que quiero hacer referencia a un miembro de un initializer_list que ya he definido. ¿Puedo hacerlo?
Este código comp ... erado: "13 55" tanto en Visual Studio como en gcc , me gustaría saber que es legal:
const int foo[2] = {13, foo[0] + 42};