Как подобрать значение для базовых типов int32_t
, int8_t
и т.д. для шаблонного класса?
Т.е. что бы в методе const bool is_empty() const noexcept;
возвращалась проверка что оба поля равны нулю, .0f
, 0ui32
, 0i32
и т.д.
Или можно как-то в шаблон передать значение для сравнения?
template <typename __type>
class point_base
{
point_base() noexcept;
virtual ~point_base() noexcept;
point_base(point_base const&) noexcept;
point_base(point_base&&) noexcept;
point_base& operator=(point_base const&) noexcept;
point_base& operator=(point_base&&) noexcept;
const __type x() const noexcept;
const __type y() const noexcept;
void set_x(const __type x) noexcept;
void set_y(const __type y) noexcept;
const bool is_empty() const noexcept;
protected:
__type m_x_;
__type m_y_;
};
template<typename __type>
inline point_base<__type>::point_base() noexcept :
m_x_{},
m_y_{} {}
template<typename __type>
inline point_base<__type>::~point_base() noexcept = default;
template<typename __type>
inline point_base<__type>::point_base(point_base const&) noexcept = default;
template<typename __type>
inline point_base<__type>::point_base(point_base&&) noexcept = default;
template<typename __type>
inline point_base<__type>& point_base<__type>::operator=(point_base const&) noexcept = default;
template<typename __type>
inline point_base<__type>& point_base<__type>::operator=(point_base&&) noexcept = default;
template<typename __type>
inline const __type point_base<__type>::x() const noexcept
{
return m_x_;
}
template<typename __type>
inline const __type point_base<__type>::y() const noexcept
{
return m_y_;
}
template<typename __type>
inline void point_base<__type>::set_x(const __type x) noexcept
{
m_x_ = x;
}
template<typename __type>
inline void point_base<__type>::set_y(const __type y) noexcept
{
m_y_ = y;
}
template<typename __type>
inline const bool point_base<__type>::is_empty() const noexcept
{
// выполнить проверку что значение нулевое
}
Вам нужна инициализация значением?
template<typename T>
struct Test
{
Test():t{} {}
T t;
void out() { cout << t << endl; }
};
int main(int argc, const char * argv[])
{
Test<double>().out();
Test<bool>().out();
Test<int>().out();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Кусочек инициализации окна в конструкторе собственного класса:
Подскажите пожалуйста как сформировать массив положительных из уже существующего массива ,как именно работать с размерностью нового массива,если...
Суть задания: есть список покупок по днямСписок является вектором векторов