Вы можете использовать что-то вроде:
template <class Duration>
struct DurationSuffix;
template <class Rep>
struct DurationSuffix<std::chrono::duration<Rep, std::ratio<1>>>
{
static const char suffix[];
};
template <class Rep>
struct DurationSuffix<std::chrono::duration<Rep, std::milli>>
{
static const char suffix[];
};
template <class Rep>
const char DurationSuffix<std::chrono::duration<Rep, std::ratio<1>>>::suffix[] = "s";
template <class Rep>
const char DurationSuffix<std::chrono::duration<Rep, std::milli>>::suffix[] = "ms";
И затем вы будете использовать это в своем классе как:
template <class Duration>
struct C
{
static void f()
{
std::cout << DurationSuffix<Duration>::suffix << "\n";
}
};
int main()
{
C<std::chrono::seconds>::f();
C<std::chrono::milliseconds>::f();
return 0;
}
Это напечатает:
s
ms