Articles of c ++ 14

Inicialização agregada de C ++ 11 para classs com inicializadores de membro não estático

É permitido no padrão: struct A { int a = 3; int b = 3; }; A a{0,1}; // ??? Essa class ainda é agregada? clang aceita este código, mas o gcc não.

É uma extensão de compilador em conformidade para tratar funções de biblioteca padrão não-constexpr como constexpr?

gcc compila o seguinte código sem aviso: #include struct foo { static constexpr double a = std::cos(3.); static constexpr double c = std::exp(3.); static constexpr double d = std::log(3.); static constexpr double e1 = std::asin(1.); static constexpr double h = std::sqrt(.1); static constexpr double p = std::pow(1.3,-0.75); }; int main() { } Nenhuma das funções […]

O que são comparadores transparentes?

Em C ++ 14, containers associativos parecem ter mudado de C ++ 11 – [associative.reqmts] / 13 diz: Os modelos de function de membro find , count , lower_bound , upper_bound e equal_range não devem participar na resolução de sobrecarga, a menos que o tipo Compare::is_transparent exista. Qual é o propósito de tornar um comparador […]

Como implementar algoritmos clássicos de ordenação no moderno C ++?

O algoritmo std::sort (e seus primos std::partial_sort e std::nth_element ) da C ++ Standard Library é na maioria das implementações uma combinação complicada e híbrida de algoritmos de ordenação mais elementares , como sort sort, insertion sort, quick sort , merge sort, ou heap sort. Há muitas perguntas aqui e em sites irmãos, como https://codereview.stackexchange.com/, […]

Implementação C ++ 14 make_integer_sequence

Eu tentei implementar o modelo de alias de C ++ 14 make_integer_sequence , que simplifica a criação do modelo de class integer_sequence . template struct integer_sequence { typedef T value_type; static constexpr size_t size() noexcept { return sizeof…(I) ; } }; template using make_integer_sequence = integer_sequence; // only for illustration. Para implementar make_integer_sequence , precisamos […]

O padrão C ++ mudou em relação ao uso de valores indeterminados e comportamento indefinido em C ++ 14?

Como abordado em A boot implica conversão de valor para rvalor? É int x = x; UB? o padrão C ++ tem um exemplo surpreendente na seção 3.3.2 Ponto de declaração em que um int é inicializado com seu próprio valor indeterminado: int x = 12; { int x = x; } Aqui o segundo […]

Por que não devo #include ?

Eu postei uma pergunta com meu código cuja única diretiva #include era a seguinte: #include Meu professor me disse para fazer isso, mas na seção de comentários eu fui informado de que não deveria. Por quê?