Resultados da pesquisa a pedido "crtp"

4 a resposta

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() { ...

2 a resposta

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 ...

1 a resposta

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 ...

2 a resposta

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 << ...

2 a resposta

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 ...

2 a resposta

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], ...

4 a resposta

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 : ...

1 a resposta

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); } ...

3 a resposta

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 ...

2 a resposta

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 ...