Articles of c ++ c ++ 11

tipo de retorno à direita usando decltype com uma function de modelo variadic

Eu quero escrever um sumdor simples (para risos) que adiciona todos os argumentos e retorna uma sum com o tipo apropriado. Atualmente, tenho isto: #include using namespace std; template T sum(const T& in) { return in; } template auto sum(const T& t, const P&… p) -> decltype(t + sum(p…)) { return t + sum(p…); } […]

const vs constexpr em variables

Existe uma diferença entre as seguintes definições? const double PI = 3.141592653589793; constexpr double PI = 3.141592653589793; Se não, qual estilo é preferido no C ++ 11?

Quais são os namespaces inline para?

C ++ 11 permite inline namespace s, todos os membros dos quais também são automaticamente no namespace envolvente. Não consigo pensar em nenhuma aplicação útil disso – alguém pode dar um exemplo breve e sucinto de uma situação em que um inline namespace é necessário e onde é a solução mais idiomática? (Além disso, não […]

Hash da string de tempo de compilation

Eu li em alguns lugares diferentes que usando novas literais de C ++ 11, é possível calcular o hash de uma string em tempo de compilation. No entanto, ninguém parece estar pronto para sair e dizer que será possível ou como seria feito. Isso é possível? Como seria o operador? Estou particularmente interessado em casos […]

Diferenças entre unique_ptr e shared_ptr

Duplicatas possíveis: pimpl: shared_ptr ou unique_ptr pointers inteligentes (boost) explicados Alguém poderia explicar as diferenças entre shared_ptr e unique_ptr?

Como converter um lambda para uma function std :: usando modelos

Basicamente, o que eu quero ser capaz de fazer é pegar um lambda com qualquer número de qualquer tipo de parâmetro e convertê-lo em uma function std ::. Eu tentei o seguinte e nenhum método funciona. std::function([](){});//Complains that std::function is missing template parameters template void foo(function f){} foo([](){});//Complains that it cannot find a matching candidate […]

usando template externo (C ++ 11)

Figura 1: modelos de function TemplHeader.h template void f(); TemplCpp.cpp template void f(){ //… } //explicit instantation template void f(); Main.cpp #include “TemplHeader.h” extern template void f(); //is this correct? int main() { f(); return 0; } Essa é a maneira correta de usar o extern template ou eu uso essa palavra-chave apenas para modelos […]

O C ++ 11 permite vetor ?

Os requisitos de contêiner foram alterados de C ++ 03 para C ++ 11. Enquanto o C ++ 03 tinha requisitos gerais (por exemplo, construtibilidade de cópia e designabilidade para vetor), o C ++ 11 define requisitos de granularidade fina em cada operação de contêiner (seção 23.2). Como resultado, você pode, por exemplo, armazenar um […]

Expansão do pacote de modelos Variadic

Eu estou tentando aprender modelos e funções variadicas. Não consigo entender por que esse código não compila: template static void bar(T t) {} template static void foo2(Args… args) { (bar(args)…); } int main() { foo2(1, 2, 3, “3”); return 0; } Quando eu compilo, falha com o erro: Erro C3520: ‘args’: o pacote de parâmetros […]

SFINAE trabalhando no tipo de retorno, mas não como parâmetro de modelo

Eu já usei o idioma SFINAE algumas vezes e me acostumei a colocar meus std::enable_if em parâmetros de template ao invés de em tipos de retorno. No entanto, deparei-me com um caso trivial em que não funcionou e não sei porquê. Primeiro de tudo, aqui é meu principal: int main() { foo(5); foo(3.4); } Aqui […]