Perguntas com a marcação «initializer-list»



8
initializer_list e mover semântica
Posso mover elementos de um std::initializer_list<T>? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } } Uma vez que std::intializer_list<T>requer atenção especial do compilador e não tem semântica de valor como os contêineres normais da …


5
Posso listar e inicializar um vetor do tipo apenas de movimentação?
Se eu passar o código a seguir por meio de meu instantâneo GCC 4.7, ele tentará copiar os unique_ptrs para o vetor. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Obviamente, isso não pode funcionar porque std::unique_ptrnão é copiável: …

3
Quando usar o inicializador entre chaves?
Em C ++ 11, temos essa nova sintaxe para inicializar classes que nos dá um grande número de possibilidades de como inicializar variáveis. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; std::complex<double> c …



6
Faixa inocente baseada em loop não funcionando
O seguinte não compila: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Experimente no godbolt O erro do compilador é: error: assignment of read-only reference 's' Agora, no meu caso …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.