📄 access_control.hpp
字号:
// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)// (C) Copyright 2003-2007 Jonathan Turkanis// 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.)// See http://www.boost.org/libs/iostreams for documentation.// Contains the definition of the class template access_control, which// allows the type of inheritance from a provided base class to be specified // using a template parameter.#ifndef BOOST_IOSTREAMS_ACCESS_CONTROL_HPP_INCLUDED#define BOOST_IOSTREAMS_ACCESS_CONTROL_HPP_INCLUDED#if defined(_MSC_VER) && (_MSC_VER >= 1020)# pragma once#endif #include <boost/iostreams/detail/select.hpp>#include <boost/mpl/identity.hpp>#include <boost/type_traits/is_same.hpp>namespace boost { namespace iostreams {struct protected_ { }; // Represents protected inheritance.struct public_ { }; // Represents public inheritance.namespace detail { // Implements protected inheritance. template<typename U> struct prot_ : protected U { prot_() { } template<typename V> prot_(V v) : U(v) { } }; // Implements public inheritance. template<typename U> struct pub_ : public U { pub_() { } template<typename V> pub_(V v) : U(v) { } };//// Used to deduce the base type for the template access_control.//template<typename T, typename Access>struct access_control_base { typedef int bad_access_specifier; typedef typename iostreams::select< // Disambiguation for Tru64 ::boost::is_same< Access, protected_ >, prot_<T>, ::boost::is_same< Access, public_ >, pub_<T>, else_, bad_access_specifier >::type type;};} // End namespace detail.//// Template name: access_control.// Description: Allows the type of inheritance from a provided base class// to be specified using an int template parameter.// Template parameters:// Base - The class from which to inherit (indirectly.)// Access - The type of access desired. Must be one of the // values access_base::prot or access_base::pub.//template< typename T, typename Access, typename Base = // VC6 workaraound (Compiler Error C2516) typename detail::access_control_base<T, Access>::type >struct access_control : public Base { access_control() { } template<typename U> explicit access_control(U u) : Base(u) { }};//----------------------------------------------------------------------------//} } // End namespaces iostreams, boost.#endif // #ifndef BOOST_IOSTREAMS_ACCESS_CONTROL_HPP_INCLUDED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -