5

के लिए घोषणा का उपयोग 'क्या using साहित्यिक ऑपरेटर, operator "" के लिए घोषणा संभव है?उपयोगकर्ता द्वारा परिभाषित शाब्दिक ऑपरेटर

जैसे,

#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; 
} 

मेरे काम के आसपास अपने स्वयं के नेस्टेड नाम स्थान literals कहा जाता है, जो using namespace MyNamespace::literals; की अनुमति देता है में इन ऑपरेटरों डाल करने के लिए किया गया है, लेकिन यह कुछ हद तक असजीला लगता है, और मैं नहीं दिख रहा है यही कारण है कि using निर्देश operator फ़ंक्शंस के लिए उसी तरह से उपयोग नहीं किया जा सकता है जैसा कि यह किसी अन्य कार्य या किसी नामस्थान के प्रकार के लिए कर सकता है।

+2

'MyNamespace :: ऑपरेटर का उपयोग" "_ घंटा;' –

+0

@PiotrSkotnicki यही है, मेरे दोस्त, एक जवाब है। (एक सही उत्तर, यहां तक ​​कि!) –

उत्तर

6
using MyNamespace::operator""_hr; 
//       ^^^ 

DEMO

व्याकरण संदर्भ:

using-declaration: 
    using typename (opt) nested-name-specifier unqualified-id ; 
    using :: unqualified-id ; 

unqualified-id: 
    identifier 
    operator-function-id 
    conversion-function-id 
    literal-operator-id 
    ~ class-name 
    ~ decltype-specifier 
    template-id 

literal-operator-id: 
    operator string-literal identifier 
    operator user-defined-string-literal 
+0

तो 'उपयोगकर्ता परिभाषित-स्ट्रिंग-शाब्दिक' '_hr'' के अनुरूप वाक्यविन्यास तत्व है? –

+0

@KyleStrand हां, 'उपयोगकर्ता-परिभाषित-स्ट्रिंग-शाब्दिक'' स्ट्रिंग-शाब्दिक पहचानकर्ता 'जैसा ही क्रमशः '' '' '' '' '' '' '' '' '' '' '' '' '' '' –

संबंधित मुद्दे