Tôi có một hàm mẫu có số lượng đối số thay đổi. Vì bạn không thể ép buộc đối số là một loại nhất định, tôi muốn ít nhất là buộc số lượng đối số không cao hơn số xác định thời gian biên dịch (ví dụ 10).Giới hạn số tham số trong gói tham số mẫu variadic
Có thể làm cho trình biên dịch đưa ra lỗi nếu chức năng mẫu có gói tham số có số đối số cao hơn giá trị được xác định thời gian biên dịch không?
template <class ...Args>
void setRequestArguments(const Args&... args)
{
const std::vector<QGenericArgument> vec = { args... };
qDebug() << sizeof...(args);
// Do stuff...
// for (unsigned i = 0; i < vec.size(); ++i) {
// qDebug() << vec[i].name();
// }
}
Tôi muốn sử dụng nó cho một vùng chứa chung cho tất cả các đối số trong hàm chức năng bao bọc QMetaObject::invokeMethod
.
có thể giới hạn đối số cho một loại nhất định. Bạn có muốn một câu trả lời về điều này? Bạn có yêu cầu các đối số chính xác là 'T' hoặc một cái gì đó có thể chuyển đổi thành' T' không? – bolov
@bolov Vâng, xin vui lòng, điều đó sẽ cực kỳ hữu ích! Tôi sẽ +1 –
Tôi đã tạo một bài đăng mới với chính xác điều này: http://stackoverflow.com/questions/39659127/restrict-variadic-template-arguments/39659128#39659128 – bolov