fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <type_traits>
  4.  
  5. using namespace std;
  6.  
  7. template <typename T>
  8. struct NaiveVector {
  9. vector<T> v;
  10. NaiveVector(size_t num, const T &val) : v(num, val) {
  11. cout << "(int num, const T &val)" << endl;
  12. }
  13.  
  14. template <typename InputIterator,
  15. typename ::std::enable_if<
  16. ::std::is_constructible<
  17. T,
  18. decltype(*::std::declval<InputIterator>())
  19. >::value
  20. >::type* = nullptr
  21. >
  22. NaiveVector(InputIterator first, InputIterator last) : v(first, last) {
  23. cout << "(InputIterator first, InputIterator last)" << endl;
  24. }
  25.  
  26. size_t size() const { return v.size(); }
  27. };
  28.  
  29. int main() {
  30. vector<bool> vec({true, false, true, true});
  31. NaiveVector<bool> myVec2(vec.cbegin(), vec.cend());
  32. cout << "size = " << myVec2.size() << endl;
  33. for (auto n : myVec2.v) { cout << n << " "; }
  34. cout << endl;
  35. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
(InputIterator first, InputIterator last)
size = 4
1 0 1 1