examples.qbk

来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 103 行

QBK
103
字号
[/    Boost.Optional    Copyright (c) 2003-2007 Fernando Luis Cacciola Carballal    Distributed under the Boost Software License, Version 1.0.    (See accompanying file LICENSE_1_0.txt or copy at    http://www.boost.org/LICENSE_1_0.txt)][section Examples][section Optional return values]    optional<char> get_async_input()    {        if ( !queue.empty() )            return optional<char>(queue.top());        else return optional<char>(); // uninitialized    }    void receive_async_message()    {        optional<char> rcv ;        // The safe boolean conversion from 'rcv' is used here.        while ( (rcv = get_async_input()) && !timeout() )            output(*rcv);    }[endsect][section Optional local variables]    optional<string> name ;    if ( database.open() )    {        name.reset ( database.lookup(employer_name) ) ;    }    else    {        if ( can_ask_user )            name.reset ( user.ask(employer_name) ) ;    }    if ( name )        print(*name);    else print("employer's name not found!");[endsect][section Optional data members]    class figure    {        public:        figure()        {            // data member 'm_clipping_rect' is uninitialized at this point.        }        void clip_in_rect ( rect const& rect )        {            ....            m_clipping_rect.reset ( rect ) ; // initialized here.        }        void draw ( canvas& cvs )        {            if ( m_clipping_rect )                do_clipping(*m_clipping_rect);            cvs.drawXXX(..);        }        // this can return NULL.        rect const* get_clipping_rect() { return get_pointer(m_clipping_rect); }        private :        optional<rect> m_clipping_rect ;    };[endsect][section Bypassing expensive unnecessary default construction]    class ExpensiveCtor { ... } ;    class Fred    {        Fred() : mLargeVector(10000) {}        std::vector< optional<ExpensiveCtor> > mLargeVector ;    } ;[endsect][endsect] 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?