If have written a template function and the code only work correct if the template type is unsinged. Now I search for a way to prevent the fumction from compiling with signed types, without C++11.
template<typename T>
T foo() {
T a=0;
return a<<1;
}
std::is_signed
is only available since C++11, however before you can use std::numeric_limits<T>::is_signed
.
As static_assert
is also C++11, you have to use something else, eg the trick from here:
typedef int static_assert_something[something ? 1 : -1];