У меня есть куча перегруженных функций, которые работают с определенными типами данных, такими как int, double и strings. Большинство из этих функций выполняют одно и то же действие, где разрешен только определенный набор типов данных. Это означает, что я не могу создать простую универсальную шаблонную функцию, поскольку теряю безопасность типов (и потенциально могу столкнуться с проблемой времени выполнения для проверки внутри функции)
Можно ли создать «полуобобщенную безопасную функцию типа времени компиляции»? Если так, то как? Если нет, то появится ли это в C ++ 0x?
(недействительная) идея;
template <typename T, restrict: int, std::string >
void foo(T bar);
...
foo((int)0); // OK
foo((std::string)"foobar"); // OK
foo((double)0.0); // Compile Error
Примечание: я понимаю, что мог бы создать класс с перегруженными конструкторами и операторами присваивания и передать вместо него переменную этого класса.