Как я могу перегрузить функцию, обертывающую структуры данных STL? - PullRequest
1 голос
/ 25 февраля 2020

Я пишу функцию-оболочку, которая принимает некоторые устаревшие структуры данных, которые не используют шаблоны, но также хотели бы вариант для структур данных STL.

  template<class DataType,
           std::enable_if_t<std::is_same<DataType, Array>>::value, int> = 0>
  auto MyFunc(DataType data) { ... }

  template<class DataType,
           std::enable_if_t<std::is_same<DataType, HashSet>>::value, int> = 0>
  auto MyFunc(DataType data) { ... }

  template<template<class DataType, class ValType,
           std::enable_if_t<std::is_same<DataType, ???>::value, int> = 0>
  auto MyFunc(DataType data) { ... }

Как мне написать последнюю функцию, чтобы он принимал std :: vector и аналогичные типы данных, принимающие один параметр шаблона? У меня это написано здесь с SFINAE, но я также открыт для перегрузки функций. Я использую C ++ 14.

...