On cppreference có một đề cập rằng người ta có thể có nhà khai thác sử dụng theo nghĩa đen templated, với một số hạn chế:Khi nào và làm thế nào để sử dụng toán tử mẫu?
Nếu các nhà điều hành nghĩa đen là một mẫu, nó phải có một danh sách tham số rỗng và có thể chỉ có một tham số mẫu, mà phải là một tổ chức phi kiểu mẫu tham số gói với yếu tố loại
char
, chẳng hạn như
template <char...> double operator "" _x();
vì vậy, tôi đã viết một mặt hàng như trong các mã dưới đây:
template <char...>
double operator "" _x()
{
return .42;
}
int main()
{
10_x; // empty template list, how to specify non-empty template parameters?
}
Câu hỏi:
- Mã này hoạt động, nhưng làm thế nào tôi có thể sử dụng toán tử với một số thông số mẫu không có sản phẩm nào?
10_x<'a'>;
hoặc10_<'a'>x;
không biên dịch. - Bạn có ví dụ nào về việc sử dụng thực tế các nhà khai thác templated như thế giới thực không?
Tôi chưa bao giờ thấy điều đó trước đây, nhưng có vẻ như ý tưởng là xử lý các ký tự trước tiền tố dưới dạng 'char' tại thời gian biên dịch, chứ không phải xử lý nó như một chữ số và truyền nó đến một run- chức năng thời gian. –
@KyleStrand Nhưng tôi vẫn không chắc chắn cách bạn sử dụng nó (tức là biên dịch nó không có lỗi). – vsoftco
Rõ ràng là tôi không phải là, vì tôi chưa bao giờ thấy nó trước đây! Nhưng tôi có một ví dụ làm việc mà tôi vừa viết, vì vậy tôi sẽ đăng nó. –