Выбор параметра шаблона класса политики на основе перегруженного конструктора - PullRequest
2 голосов
/ 08 марта 2012

Я бы хотел, чтобы шаблонный класс автоматически выбирал свой параметр в зависимости от типа класса, переданного в конструктор.объекты уже имеют типы.

InputA a;
InputA a2;
InputB b;

эти типы должны понимать конструкторы

out<>(a) out; 

is

out<InputA>(a) out;

.

out<>(a2) out;

is

out<InputA>(a2) out; 

.

out<>(b) out;

is

out<InputB>(b) out;

кажется избыточным определять аргумент шаблона (политику), когда его можно извлечь из типавходного параметра.

1 Ответ

7 голосов
/ 08 марта 2012

Это та же проблема, что и с std::pair.Стандартный обходной путь для этой проблемы - определить фабрику шаблонов (например, std::make_pair()).

например,

template<class policy>
out<policy> make_out(policy p)
{
    return out<policy>(p);
}

auto o = make_out(a);
...