2016-07-16 16 views
5
#include <type_traits> 

template<int n> 
std::enable_if_t<n == 1, int> f() {} 
// OK 

template<int n> 
std::enable_if_t<n > 1, int> g() {} 
// VS2015 : error C2988: unrecognizable template declaration/definition 

int main() 
{} 

Tôi biết lỗi là do trình biên dịch nhận "dấu" lớn hơn ">" làm dấu chấm dứt mẫu.Cách sử dụng các biểu thức so sánh trong các mẫu C++?

Câu hỏi của tôi là: Trong trường hợp này, cách làm cho biểu thức so sánh hợp pháp?

Trả lời

7

Đặt biểu thức trong dấu ngoặc đơn:

#include <type_traits> 

template<int n> 
std::enable_if_t<(n == 1), int> f() { } 

template<int n> 
std::enable_if_t<(n > 1), int> g() { } 

int main() { } 
Các vấn đề liên quan