LCOV - code coverage report
Current view: top level - usr/include/boost/parameter/aux_ - default.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 3 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : // Copyright Daniel Wallin, David Abrahams 2005.
       2             : // Copyright Cromwell D. Enage 2017.
       3             : // Distributed under the Boost Software License, Version 1.0.
       4             : // (See accompanying file LICENSE_1_0.txt or copy at
       5             : // http://www.boost.org/LICENSE_1_0.txt)
       6             : 
       7             : #ifndef DEFAULT_050329_HPP
       8             : #define DEFAULT_050329_HPP
       9             : 
      10             : namespace boost { namespace parameter { namespace aux {
      11             : 
      12             :     // A wrapper for the default value passed by the user when resolving
      13             :     // the value of the parameter with the given Keyword
      14             :     template <typename Keyword, typename Value>
      15             :     struct default_
      16             :     {
      17             :         inline BOOST_CONSTEXPR default_(Value& x) : value(x)
      18             :         {
      19             :         }
      20             : 
      21             :         Value& value;
      22             :     };
      23             : }}} // namespace boost::parameter::aux
      24             : 
      25             : #include <boost/parameter/config.hpp>
      26             : 
      27             : namespace boost { namespace parameter { namespace aux {
      28             : 
      29             :     // lazy_default -- A wrapper for the default value computation function
      30             :     // passed by the user when resolving the value of the parameter with the
      31             :     // given keyword.
      32             : #if BOOST_WORKAROUND(__EDG_VERSION__, <= 300)
      33             :     // These compilers need a little extra help with overload resolution;
      34             :     // we have empty_arg_list's operator[] accept a base class
      35             :     // to make that overload less preferable.
      36             :     template <typename KW, typename DefaultComputer>
      37             :     struct lazy_default_base
      38             :     {
      39             :         inline BOOST_CONSTEXPR lazy_default_base(DefaultComputer& x)
      40             :           : compute_default(x)
      41             :         {
      42             :         }
      43             : 
      44             :         DefaultComputer& compute_default;
      45             :     };
      46             : 
      47             :     template <typename KW, typename DefaultComputer>
      48             :     struct lazy_default
      49             :       : ::boost::parameter::aux::lazy_default_base<KW,DefaultComputer>
      50             :     {
      51             :         inline BOOST_CONSTEXPR lazy_default(DefaultComputer& x)
      52             :           : ::boost::parameter::aux::lazy_default_base<KW,DefaultComputer>(x)
      53             :         {
      54             :         }
      55             :     };
      56             : #else   // !BOOST_WORKAROUND(__EDG_VERSION__, <= 300)
      57             :     template <typename KW, typename DefaultComputer>
      58             :     struct lazy_default
      59             :     {
      60           0 :         inline BOOST_CONSTEXPR lazy_default(DefaultComputer& x)
      61             :           : compute_default(x)
      62             :         {
      63             :         }
      64             : 
      65             :         DefaultComputer& compute_default;
      66             :     };
      67             : #endif  // EDG workarounds needed.
      68             : }}} // namespace boost::parameter::aux
      69             : 
      70             : #if BOOST_WORKAROUND(__EDG_VERSION__, <= 300)
      71             : #define BOOST_PARAMETER_lazy_default_fallback \
      72             :     ::boost::parameter::aux::lazy_default_base
      73             : /**/
      74             : #else
      75             : #define BOOST_PARAMETER_lazy_default_fallback \
      76             :     ::boost::parameter::aux::lazy_default
      77             : /**/
      78             : #endif
      79             : 
      80             : #if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING)
      81             : 
      82             : #include <utility>
      83             : 
      84             : namespace boost { namespace parameter { namespace aux {
      85             : 
      86             :     template <typename Keyword, typename Value>
      87             :     struct default_r_
      88             :     {
      89           0 :         inline BOOST_CONSTEXPR default_r_(Value&& x)
      90           0 :           : value(::std::forward<Value>(x))
      91             :         {
      92             :         }
      93             : 
      94             :         Value&& value;
      95             :     };
      96             : }}} // namespace boost::parameter::aux
      97             : 
      98             : #endif  // BOOST_PARAMETER_HAS_PERFECT_FORWARDING
      99             : #endif  // include guard
     100             : 

Generated by: LCOV version 1.14