У меня есть класс и шаблон классаФункция перегрузки шаблон головоломка
class promise;
template <class... Ts>
class typed_promise;
Я намерен разработать программу произнесения, чтобы бросить между ними
template <class... Ts>
typed_promise<Ts...> promise_cast(promise x);
template <class... Ts>
promise promise_cast(typed_promise<Ts...> x);
Таким образом, вы можете сделать следующее ввергнуть
promise pms;
typed_promise<int, int> typed_pms;
auto typed_pms2 = promise_cast<int, int>(pms);
auto pms2 = promise_cast(typed_pms);
Я также хочу поддерживать использование как
auto typed_pms2 = promise_cast<typed_promise<int, int>>(pms);
что эквивалентно
auto typed_pms2 = promise_cast<int, int>(pms);
Поскольку C++ не допускает частичную функцию специализации шаблона, можно добиться того, что я хочу? Если возможно, как мне это сделать?
«не разрешает» неправильно. «Не поддерживает напрямую» больше нравится. Но здесь я не вижу * технической * проблемы, у вас есть две разные перегрузки. Просто изменяя чисто декларации на определения, [код работает] (http://coliru.stacked-crooked.com/a/c9c7c7415e98d6a4). –
Проголосовало за то, чтобы закрыть как отсутствующий пример проблемы. –
@ Cheersandhth.-Alf Это сделает 'typed_promise>'. –