yêu cầu rất lạ này đã đưa ra ...Có thể kiểm tra xem hàm có kiểu void trở
tôi cần phải làm một thời gian biên dịch kiểm tra xem chức năng hiện nay có một loại void
trở lại hay không và thất bại biên dịch nếu kiểu trả về là void
.
Tôi đã cố gắng thực hiện một số phép thuật với http://en.cppreference.com/w/cpp/types/result_of và decltype
cũng vậy, tuy nhiên tôi không thể tiến gần hơn đến giải pháp.
#include <type_traits>
void other_func(void) { }
void test_maxi(void)
{
typedef decltype(&::other_func) TYPE;
static_assert(std::is_same<TYPE, void>::value, "not void");
}
int main() {
}
Vì vậy, ở đây có các câu hỏi:
Có thể thực hiện điều này cho chức năng hiện?
EDIT Kiểm tra kiểu trả về phải có macro, vì nó sẽ được sử dụng trong một số hàm.
Tại sao? Trình biên dịch sẽ hét lên với bạn nếu bạn cố gắng gán khoảng trống cho bất cứ thứ gì. –
không có đối tượng nào như chức năng hiện tại, vậy bạn sẽ nhận được loại như thế nào? –
có thể sử dụng lambda thay vì chức năng truyền thống? – Yves