Я хочу только определить функцию, основанную на размере параметра шаблона:
template <class T>
typename std::enable_if<sizeof(T) > 1, void>::type
foobify(T v) {
// ...
}
int main() {
//foobify((unsigned char)30); // should not compile
foobify((long)30);
}
Однако я получаю:
main.cpp:8:41: error: expected unqualified-id before numeric constant
typename std::enable_if<sizeof(T) > 1, void>::type
Это работает, если я вместо этого 1 < sizeof(T). Таким образом, я считаю, что GCC думает, что я заканчиваю параметр шаблона, вместо продолжения булевского выражения.
Можно ли использовать > сам, не обойдя его?