LINUX.ORG.RU

История изменений

Исправление 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");
};

(c) https://stackoverflow.com/questions/16976720/how-do-i-restrict-a-template-class-to-certain-built-in-types/16978055

?

Второе как-то покороче вроде..

Исправление 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");
};

(c) https://stackoverflow.com/questions/16976720/how-do-i-restrict-a-template-class-to-certain-built-in-types/16978055

?

Исходная версия dissident, :

Зато не скомпилиируется если explicitely кто-то не вызовет конструктор с uint16_t или uint32_t.