Articles of c ++ c ++ 11

C ++ 11: Cálculo de Tempo de Compilação de Matriz

Suponha que eu tenha alguma function constexpr f: constexpr int f(int x) { … } E eu tenho algumas constantes int N conhecidas em tempo de compilation: Ou #define N …; ou const int N = …; conforme necessário pela sua resposta. Eu quero ter um int array X: int X[N] = { f(0), f(1), […]

Quanto é a sobrecarga de pointers inteligentes em comparação com pointers normais em C ++?

Quanto é a sobrecarga de pointers inteligentes em comparação com pointers normais no C ++ 11? Em outras palavras, meu código será mais lento se eu usar pointers inteligentes e, em caso afirmativo, quanto mais lento? Especificamente, estou perguntando sobre o C ++ 11 std::shared_ptr e std::unique_ptr . Obviamente, o material empurrado para baixo da […]

Buffer std :: fstream vs buffer manual (por que 10x ganho com buffer manual)?

Eu testei duas configurações de escrita: 1) buffer de Fstream: // Initialization const unsigned int length = 8192; char buffer[length]; std::ofstream stream; stream.rdbuf()->pubsetbuf(buffer, length); stream.open(“test.dat”, std::ios::binary | std::ios::trunc) // To write I use : stream.write(reinterpret_cast(&x), sizeof(x)); 2) buffer manual: // Initialization const unsigned int length = 8192; char buffer[length]; std::ofstream stream(“test.dat”, std::ios::binary | std::ios::trunc); // […]

Agora que temos std :: array, quais usos são deixados para os arrays de estilo C?

std::array é muito superior aos arrays C. E mesmo se eu quiser interoperar com o código legado, posso usar apenas std::array::data() . Existe alguma razão pela qual eu iria querer um array da velha escola?

Diferença entre C ++ 03 throw () especificador C ++ 11 noexcept

Existe alguma outra diferença entre throw() e noexcept além de ser verificado tempo de execução e tempo de compilation, respectivamente? O artigo da Wikipedia C ++ 11 sugere que os especificadores de lançamento do C ++ 03 estão obsoletos. Por que, então, não é capaz de cobrir tudo isso em tempo de compilation? [Nota: Eu […]

Existe um bug do compilador exposto pela minha implementação de um traço do tipo is_complete?

Eu escrevi este modelo de traço C ++ 11 para verificar se um tipo está completo: template using void_t = void; template struct is_complete : std::false_type {}; template struct is_complete<T, void_t> : std::true_type {}; e testou assim: struct Complete {}; int main() { std::cout << is_complete::value << is_complete::value << '\n'; } Eu esperava que o […]

Como faço para inicializar uma matriz de membros com um initializer_list?

Estou aprendendo com o C ++ 0x e testando as coisas com o g ++ 4.6 Eu apenas tentei o seguinte código, pensando que iria funcionar, mas ele não compila. Eu recebo o erro: incompatible types in assignment of ‘std::initializer_list’ to ‘const int [2]’ struct Foo { int const data[2]; Foo(std::initializer_list& ini) : data(ini) {} […]

Como retornar um std :: string.c_str ()

Eu tenho um método que retorna o ponteiro de char constante. Ele faz uso de um std::string e finalmente retorna seu ponteiro char c_str() . const char * returnCharPtr() { std::string someString; // some processing!. return someString.c_str(); } Eu tenho um relatório da ferramenta COVERITY que o acima não é um bom uso. Eu pesquisei […]

Detectando constexpr com SFINAE

Estou trabalhando na atualização de alguns códigos C ++ para aproveitar a nova funcionalidade do C ++ 11. Eu tenho uma class de traço com algumas funções retornando tipos fundamentais que na maioria das vezes, mas nem sempre, retornam uma expressão constante. Eu gostaria de fazer coisas diferentes com base em se a function é […]

Especificando um tipo para todos os argumentos passados ​​para a function variadic ou para a function variadic template w / out usando array, vetor, estruturas, etc?

Estou criando uma function (possivelmente function membro, não que isso importe … talvez sim?) Que precisa aceitar um número desconhecido de argumentos, mas quero que todos sejam do mesmo tipo. Eu sei que eu poderia passar em uma matriz ou vetor, mas eu quero ser capaz de aceitar a lista de argumentos diretamente sem estrutura […]