Perguntas com a marcação «constexpr»

constexpr é um modificador introduzido em C ++ 11, que informa ao compilador que o valor de uma função ou variável é conhecido ou pode ser calculado em tempo de compilação. Como tal, pode ser usado como uma constante em lugares onde, de outra forma, não poderia ser.


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 




4
É possível usar std :: string em um constexpr?
Usando C ++ 11, Ubuntu 14.04, cadeia de ferramentas padrão do GCC . Este código falha: constexpr std::string constString = "constString"; erro: o tipo 'const string {aka const std :: basic_string}' da variável constexpr 'constString' não é literal ... porque ... 'std :: basic_string' possui um destruidor não trivial É …

2
Constexpr implica inline?
Considere a seguinte função embutida: // Inline specifier version #include<iostream> #include<cstdlib> inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); } e a versão equivalente constexpr: // Constexpr specifier version #include<iostream> #include<cstdlib> constexpr int f(const int x); …

2
O que significa “envenenar uma função” em C ++?
No final da palestra de Scott Schurr "Apresentando constexpr" na CppCon , ele pergunta "Existe uma maneira de envenenar uma função"? Ele então explica que isso pode ser feito (embora de uma forma não padronizada) por: Colocando um throwem uma constexprfunção Declarando um não resolvido extern const char* Referenciando o …
96 c++  constexpr 

3
Constexpr vs macros
Onde devo preferir usar macros e onde devo preferir constexpr ? Eles não são basicamente os mesmos? #define MAX_HEIGHT 720 vs constexpr unsigned int max_height = 720;
95 c++  c++11  macros  constexpr 


3
Como posso obter a profundidade de um std :: vector multidimensional em tempo de compilação?
Eu tenho uma função que tem uma std::vectordimensão multidimensional e requer que a profundidade (ou o número de dimensões) seja passada como um parâmetro de modelo. Em vez de codificar esse valor, eu gostaria de escrever uma constexprfunção que aceite std::vectore retorne a profundidade como um unsigned integervalor. Por exemplo: …



1
std :: pair <auto, auto> tipo de retorno
Eu estava brincando com autono std::pair. No código abaixo, a função fdeve retornar um std::pairdos tipos que dependem de um parâmetro de modelo. Um exemplo de trabalho: EXEMPLO 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if 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.