Perguntas com a marcação «c++11»

Use essa tag para código que deve ser compilado como C ++ 11 (sem usar os recursos introduzidos no C ++ 14 ou posterior).

8
Quando devo realmente usar noexcept?
A noexceptpalavra-chave pode ser aplicada adequadamente a muitas assinaturas de funções, mas não tenho certeza sobre quando devo considerar usá-la na prática. Com base no que li até agora, a adição de última hora noexceptparece abordar algumas questões importantes que surgem quando os construtores de movimento jogam. No entanto, ainda …

6
Vantagens de usar para a frente
No encaminhamento perfeito, std::forwardé usado para converter as referências rvalue nomeadas t1e t2em referências rvalue não nomeadas. Qual é o propósito de fazer isso? Como isso afetaria a função chamadainner se deixarmos t1& t2como lvalues? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
C ++ 11 rvalues ​​e mover semântica confusão (declaração de retorno)
Estou tentando entender as referências rvalue e mover a semântica do C ++ 11. Qual é a diferença entre esses exemplos e qual deles não fará cópia vetorial? Primeiro exemplo std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); Segundo exemplo std::vector<int>&& return_vector(void) { std::vector<int> tmp …


6
Como passo um argumento unique_ptr para um construtor ou função?
Eu sou novo em mover semântica no C ++ 11 e não sei muito bem como lidar com unique_ptrparâmetros em construtores ou funções. Considere esta classe fazendo referência própria: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); …


10
Recipientes C ++ STL com impressão bonita
Observe as atualizações no final deste post. Atualização: eu criei um projeto público no GitHub para esta biblioteca! Gostaria de ter um único modelo que, de uma vez por todas, cuide da impressão bonita de todos os contêineres STL via operator<<. No pseudo-código, estou procurando algo parecido com isto: template<container …

9
O que é std :: promessa?
Estou bastante familiarizado com C ++ 11 do std::thread, std::asynce std::futurecomponentes (por exemplo, veja esta resposta ), que são simples e direta. No entanto, não consigo entender bem o que std::promiseé, o que faz e em que situações é melhor usado. O documento padrão em si não contém muita informação …

1
Typedef do modelo C ++
Eu tenho aula template<size_t N, size_t M> class Matrix { // .... }; Eu quero fazer um typedefque cria um Vector(vetor de coluna) que é equivalente a um Matrixcom tamanhos N e 1. Algo assim: typedef Matrix<N,1> Vector<N>; O que produz erro de compilação. O seguinte cria algo semelhante, mas …
369 c++  templates  c++11  typedef 

5
Retornando unique_ptr das funções
unique_ptr<T>não permite a construção da cópia, mas suporta a semântica de movimentação. No entanto, posso retornar a unique_ptr<T>de uma função e atribuir o valor retornado a uma variável. #include <iostream> #include <memory> using namespace std; unique_ptr<int> foo() { unique_ptr<int> p( new int(10) ); return p; // 1 //return move( p …
367 c++  c++11  unique-ptr 

5
Compilando C ++ 11 com g ++
Estou tentando atualizar meu compilador C ++ para C ++ 11. Pesquisei um pouco e cheguei à conclusão de que tenho de usar a bandeira -std=c++0xou -std=gnu++0x, mas não sei muitas coisas sobre bandeiras. Alguém pode me ajudar? (Estou usando o Ubuntu 12.04.) Aqui está o erro que eu recebo …
367 c++  c++11  g++  flags 

14
Como ativo o C ++ 11 no CMake?
Quando tento executar um makefile gerado pelo CMake para compilar meu programa, recebo o erro que o intervalo baseado em loops não é suportado no modo C ++ 98. Tentei adicionar add_definitions(-std=c++0x)ao meu CMakeLists.txt, mas não ajudou. Eu tentei isso também: if(CMAKE_COMPILER_IS_GNUCXX) add_definitions(-std=gnu++0x) endif() Quando eu faço g++ --version, recebo: …
356 c++11  cmake 


14
Quando você deve usar o recurso constexpr no C ++ 11?
Parece-me que ter uma "função que sempre retorna 5" está quebrando ou diluindo o significado de "chamar uma função". Deve haver um motivo ou uma necessidade desse recurso ou não seria no C ++ 11. Por que está aí? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int MeaningOfLife = …
337 c++  c++11  constexpr 


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.