I would like to maintain a range-based and type-dependent method for insertion in my class.
The question is how you can implement this type-dependency by using iterators.
The following pseudo code should explain my problem:
class Test {
public:
template<typename Iterator>
void insert(const uint8 position, const Iterator begin, const Iterator end) {
std::copy(begin, end, std::inserter(m_deque, m_deque.begin());
}
private:
std::deque<uint8> m_deque;
};
int main() {
Test t;
uint8 dataone[] = {0x00, 0xff};
uint16 datatwo[] = {0xff, 0x00};
std::vector<uint8> vecdataone = {0x00, 0xff};
std::vector<uint16> vecdatatwo = {0xff, 0x00};
t.insert(0, dataone, dataone + 2); // OKAY
t.insert(0, datatwo, datatwo + 2); // SHOULD CAUSE AN ERROR
t.insert(0, vecdataone.cbegin(), vecdataone.cend()); // OKAY
t.insert(0, vecdatatwo.cbegin(), vecdatatwo.cend()); // SHOULD CAUSE AN ERROR
}
Greets.