Các specifier không được chấp nhận có được chấp nhận trong hàm typedef không?specifier không được nhận dạng trong hàm typedefs
như trong:
typedef void (*fptr)() noexcept;
trực giác, specifiers noexcept dường như có ý nghĩa vì chúng sẽ cho phép một số optimisations ở bên cạnh của người gọi.
Tôi nhận được câu trả lời hỗn hợp từ gcc 4.6.1.
typedef void (*fptr)() noexcept;
kết quả trong: lỗi: ‘fptr’ tuyên bố với một đặc điểm kỹ thuật ngoại lệ
nhưng:
template<void (*FPtr)() noexcept>
struct A{};
biên dịch mà không báo trước.
Cảm ơn. Điều này có thể làm cho chấp nhận mệnh đề noexcept trong đối số mẫu ở trên một lỗi trong gcc? – mirk
Tôi không nghĩ vậy. [temp.param]/p4 nói rằng các tham số không phải kiểu có thể là một con trỏ để hoạt động và tôi không thấy bất kỳ đề cập nào về các đặc tả ngoại lệ trong khu vực đó. Và [except.spec]/p2 đặc biệt nói rằng một đặc tả ngoại lệ có thể xuất hiện trên một con trỏ để hoạt động. –
Cảm ơn bạn lần nữa. Tôi hơi bối rối với kết quả này, nhưng không có điểm tranh cãi với tiêu chuẩn. – mirk