Ok, complete code and error messages are below. I have renamed swap to remove that concern. Many thanks.
Paul
#include <iostream>
#include <stdexcept>
#include <vector>
using std::vector;
template<typename T>
void swap1(T& x, T&y)
{
T tmp = x;
x = y;
y = tmp;
}
template<typename T>
void reverse(vector<T>& vec)
{
if(vec.empty())
return;
for(int i = 0, j = vec.size() - 1; i < j; ++i, --j)
swap1<T>(vec[i], vec[j]);
}
int main()
{
vector<bool> vec = {true, false, false};
reverse<bool>(vec);
for(int i = 0; i < vec.size(); ++i)
std::cout << std::endl << vec[i];
}
Errors are:
||=== Build: Debug in reverse (compiler: GNU GCC Compiler) ===|
C:\Users\silviadaniel\Desktop\reverse\main.cpp||In function 'int main()':|
C:\Users\silviadaniel\Desktop\reverse\main.cpp|28|warning: comparison between signed and unsigned integer expressions [-Wsign-compare]|
C:\Users\silviadaniel\Desktop\reverse\main.cpp||In instantiation of 'void reverse(std::vector<T>&) [with T = bool]':|
C:\Users\silviadaniel\Desktop\reverse\main.cpp|27|required from here|
C:\Users\silviadaniel\Desktop\reverse\main.cpp|21|error: no matching function for call to 'swap1(std::vector<bool>::reference, std::vector<bool>::reference)'|
C:\Users\silviadaniel\Desktop\reverse\main.cpp|21|note: candidate is:|
C:\Users\silviadaniel\Desktop\reverse\main.cpp|7|note: template<class T> void swap1(T&, T&)|
C:\Users\silviadaniel\Desktop\reverse\main.cpp|7|note: template argument deduction/substitution failed:|
C:\Users\silviadaniel\Desktop\reverse\main.cpp|21|note: cannot convert '(& vec)->std::vector<bool, _Alloc>::operator[]<std::allocator<bool> >(((std::vector<bool>::size_type)i))' (type 'std::vector<bool>::reference {aka std::_Bit_reference}') to type 'bool&'|
||=== Build failed: 1 error(s), 3 warning(s) (0 minute(s), 0 second(s)) ===|