Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Я бы с удовольствием, но у меня много кода под виндовое ядро, там std [почти] нет, а выдирать и тащить фрагментами — то еще удовольствие. Ну и очень желательно сделать все средствами VC++ 15.00 (из VS 2008 и WDK 7).
Я про ядро и возможности VS2008 мало знаю
(.
Сухая идея — избавиться от второго параметра шаблона функции выводя тип результата из типа аргумента функции, используя трейты для нужных типов. Всё, что использовал, живет в cstdint и type_traits и может быть использовано без С++11, если использовать enable_if<...>::type вместо enable_if_t и typedef вместо using.
Если совсем уж без стандартных заголовков, то примерно вот велосипедные is_same и enable_if:
template<typename First, typename Second> is_same{static const bool value = false;};
temaple<typename T> is_same<T, T>{static const bool value = true;}
template<bool Key, class T = void> struct enable_if{};
template<class T> struct enable_if<true, T> {typedef T type;};