Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //template <typename T>
- //class Pool8;
- template <typename T>
- class Pool8
- {
- T poolData[8];
- public:
- Pool8& set(int idx, const T& val) { poolData[idx] = val; return *this; };
- const T& get(int idx) const { return poolData[idx]; }
- Pool8& print() { for (auto const& elem : poolData) { std::cout << elem << '\n'; }; return *this; };
- };
- template<>
- class Pool8<bool>
- {
- uint8_t poolData;
- public:
- Pool8& set(int idx, bool val)
- {
- uint8_t mask{ 1u << idx };
- val ? poolData |= mask : poolData &= ~mask;
- return *this;
- };
- bool get(int idx)
- {
- uint8_t mask{ 1u << idx };
- return (poolData & mask) != 0;
- }
- Pool8& print()
- {
- for (int i{ 7 }; i >= 0; --i)
- {
- std::cout << get(i);
- };
- std::cout << '\n';
- return *this;
- };
- };
- template <>
- class Pool8<char>
- {
- char poolData[8];
- public:
- Pool8& set(int idx, char val) { poolData[idx] = val; return *this; };
- const char get(int idx) const { return poolData[idx]; }
- Pool8& print()
- {
- for (auto const& elem : poolData)
- {
- std::cout << elem;
- };
- return *this;
- };
- };
- int main()
- {
- Pool8<bool> poolInt;
- for (int i{ 0 }; i < 8; ++i)
- {
- poolInt.set(i, rand() % 2);
- }
- poolInt.print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement