Resultados da pesquisa a pedido "crtp"
Proteger o padrão CRTP da pilha transbordando em chamadas "puramente virtuais"
Considere o seguinte exemplo padrão de CRTP: #include <iostream> template<class Derived> struct Base { void f() { static_cast<Derived *>(this)->f(); } void g() { static_cast<Derived *>(this)->g(); } }; struct Foo : public Base<Foo> { void f() { ...
Quais são as regras para uma inicialização de variável estática de classe?
Eu tenho algum código legado e preciso adicionar uma nova classe para a mensagem (o que é irrelevante para a minha pergunta). Mas acontece que eu preciso declarar um construtor vazio para que alguma estática seja inicializada. Não é um construtor ...
Inicializando um membro de dados constexpr estático da classe base usando um membro de dados constexpr estático da classe derivada
Considere o seguinte código: template<typename T> struct S { static constexpr int bar = T::foo; }; struct U: S<U> { static constexpr int foo = 42; }; int main() { }GCC v6.1 [https://godbolt.org/g/xDmBPW]compila,clang 3.8 ...
Padrão de modelo curiosamente recorrente (CRTP) com constexpr estático em Clang
Considere o meu exemplo simples abaixo: #include <iostream> template <typename T> class Base { public: static constexpr int y = T::x; }; class Derived : public Base<Derived> { public: static constexpr int x = 5; }; int main() { std::cout << ...
Erro de compilação do CRTP
O seguinte será compilado com o GCC 5.2, mas não com o Visual Studio 2015. template <typename Derived> struct CRTP { static constexpr int num = Derived::value + 1; }; struct A : CRTP<A> { static constexpr int value = 5; }; Reclama queA não tem ...
Como proteger o CRTP contra o fornecimento de superclasse errada? [duplicado]
Esta pergunta já tem uma resposta aqui: Como evitar erros ao usar o CRTP? [/questions/4417782/how-to-avoid-errors-while-using-crtp] 5 respostasNopadrão curiosamente recorrente [http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern], ...
Uma coleção polimórfica de CRTP (Curiously Recorrring Template Pattern) em C ++?
Eu tenho aulaBase da qual eu tenho duas classes,DerivedA eDerivedB conforme definido abaixo. template <typename Derived> class Base{ public: double interface(){ static_cast<Derived*>(this)->implementation(); } }; class Derived,A : ...
Problemas de subclassificação dependentes de parâmetros de modelo e modelo curiosamente recorrentes
Estou tentando fazer o seguinte código funcionar template < class __derived, class __object = typename __derived::Object > struct Base { using Derived = __derived; using Object = __object; void function(Object o) { return Derived::function(s); } ...
Polimorfismo estático com CRTP: usando a classe base para chamar métodos derivados
Um dos principais benefícios devirtual em C ++ é capaz de usar a classe base (ponteiro ou referência) para chamar métodos derivados. Eu estou lendousando CRTP para implementar polimorfismo ...
Usando CRTP com herança virtual
Eu tenho uma hierarquia de nós, onde "diamante" pode ocorrer. Cada nó deve ser clonável, mas não quero gravar o método clone em cada nó. Então eu uso o CRTP. class Node { public: Node(){} Node(Fill*) { } virtual ~Node() {} virtual Node ...