История изменений
Исправление dissident, (текущая версия) :
Зато не скомпилиируется если explicitely кто-то не вызовет конструктор с uint16_t или uint32_t.
Короче IMHO сойдет. Анонимусу которому не компелируется:
template<typename ResolutionType,
typename std::enable_if_t<
std::is_same<uint16_t, ResolutionType>::value || std::is_same<uint32_t, ResolutionType>::value,
ResolutionType>
>
class Timer {
public:
Timer(ResolutionType us)
//...
Или так лучше?
template <typename RealType>
class A
{
static_assert(std::is_same<RealType, double>::value || std::is_same<RealType, float>::value,
"some meaningful error message");
};
?
Второе как-то покороче вроде..
Исправление dissident, :
Зато не скомпилиируется если explicitely кто-то не вызовет конструктор с uint16_t или uint32_t.
Короче IMHO сойдет. Анонимусу которому не компелируется:
template<typename ResolutionType,
typename std::enable_if_t<
std::is_same<uint16_t, ResolutionType>::value || std::is_same<uint32_t, ResolutionType>::value,
ResolutionType>
>
class Timer {
public:
Timer(ResolutionType us)
//...
Или так лучше?
template <typename RealType>
class A
{
static_assert(std::is_same<RealType, double>::value || std::is_same<RealType, float>::value,
"some meaningful error message");
};
?
Исходная версия dissident, :
Зато не скомпилиируется если explicitely кто-то не вызовет конструктор с uint16_t или uint32_t.