Tôi muốn chỉ định nghĩa một hàm dựa trên kích thước của mẫu tham số:Cách sử dụng> (lớn hơn) bên trong thông số mẫu và không nhận được lỗi phân tích cú pháp?
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);
}
Tuy nhiên, tôi nhận được:
main.cpp:8:41: error: expected unqualified-id before numeric constant
typename std::enable_if<sizeof(T) > 1, void>::type
Nó hoạt động nếu tôi thay vì làm 1 < sizeof(T)
. Vì vậy, tôi tin rằng GCC đang nghĩ rằng tôi đang kết thúc tham số mẫu, thay vì tiếp tục biểu thức boolean.
Có cách nào để tự mình sử dụng >
mà không phải giải quyết nó không?
Cũng xem [Toán tử và mẫu-id] (http://stackoverflow.com/q/28354108/1708801) –
Bạn cũng có thể sử dụng 'is_greater'' typename std :: enable_if :: type': PPPPP –
101010