Como escolher o tipo de argumento de uma função membro do modelo de classe dependendo do valor do parâmetro do modelo de classe?
Aqui está um exemplo:
#include <memory>
template <class T, bool plainPointer=true>
class C
{
// pseudocode below
void f(plainPointer ? T * x : std::shared_ptr<T> x) { /*implementation*/ }
};
Ou seja, se plainPointer==true
, a seguinte função membro da classe deve ser definida:
void f(T * x) { /*implementation*/ }
caso contrário, esta função membro deverá ser definida:
void f(std::shared_ptr<T> x) { /*implementation*/ }
Eu gostaria de ter uma única implementação para ambas as funções , e apenas o tipo de argumento f
deveria ser plainPointer
dependente.