Có thể khai báo using
cho toán tử literal, operator ""
không?Khai báo `sử dụng` cho một toán tử dạng chữ do người dùng định nghĩa
Ví dụ,
#include <chrono>
namespace MyNamespace
{
constexpr std::chrono::hours operator "" _hr(unsigned long long n){
return std::chrono::hours{n};
}
// ... other stuff in the namespace ...
}
using MyNamespace::operator""; // DOES NOT COMPILE!
int main()
{
auto foo = 37_hr;
}
công việc xung quanh của tôi đã được đặt các nhà khai thác trong namespace lồng nhau của riêng họ gọi literals
, cho phép using namespace MyNamespace::literals;
, nhưng điều này có vẻ hơi không thanh nha, và tôi không hiểu tại sao các using
không thể sử dụng chỉ thị cho các hàm operator
giống như cách có thể cho bất kỳ chức năng hoặc loại nào khác trong không gian tên.
'sử dụng MyNameSpace :: operator "" _ hr; ' –
@PiotrSkotnicki đó, bạn của tôi, là một câu trả lời. (Câu trả lời đúng, ngay cả!) –