1 /* { dg-do compile } */
2 /* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
17 void const* address() const { return &data[0]; }
18 void * address() { return &data[0]; }
27 optional_base ( T const& val )
33 void assign ( optional<U> const& rhs )
35 if (!is_initialized())
36 if ( rhs.is_initialized() )
42 bool is_initialized() const { return m_initialized ; }
46 void construct ( T const& val )
48 new (m_storage.address()) T(val) ;
51 T const* get_ptr_impl() const
52 { return static_cast<T const*>(m_storage.address()); }
57 aligned_storage m_storage ;
62 class optional : public optional_base<T>
64 typedef optional_base<T> base ;
68 optional() : base() {}
69 optional ( T const& val ) : base(val) {}
70 optional& operator= ( optional const& rhs )
76 T const& get() const ;
78 T const* operator->() const { assert(this->is_initialized()) ; return this->get_ptr_impl() ; }
89 template<typename _Tp, std::size_t _Nm>
92 typedef _Tp value_type;
93 typedef const value_type* const_iterator;
95 value_type _M_instance[_Nm];
107 template < typename T > inline
109 make_array(const T& b1)
111 std::array<T, 1> a = { { b1 } };
117 typedef std::array<NT, 1> Base;
123 : base(make_array(x)) {}
127 using boost::optional ;
129 optional< std::pair< NT, NT > >
132 optional< V > construct_normal_offset_lines_isecC2 ( )
134 optional< std::pair<NT,NT> > ip;
136 ip = linsolve_pointC2();