Viewing file: noexcept13.C (1.66 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/49107 // { dg-do compile { target c++11 } }
namespace std { template<typename _Tp> _Tp&& declval() noexcept;
struct true_type { static const bool value = true; }; struct false_type { static const bool value = false; };
template<typename _Tp, typename _Arg> struct __is_direct_constructible_impl { template<typename _Tp2, typename _Arg2, typename = decltype(::new _Tp2(declval<_Arg2>()))> static true_type __test(int);
template<typename, typename> static false_type __test(...);
typedef decltype(__test<_Tp, _Arg>(0)) type; };
template<typename _Tp, typename _Arg> struct __is_direct_constructible_new_safe : public __is_direct_constructible_impl<_Tp, _Arg>::type { };
template<class _T1, class _T2> struct pair { pair() = default; constexpr pair(const pair&) = default;
pair(pair&& __p) noexcept(__is_direct_constructible_new_safe<_T2,_T2&&>::value); }; }
template <class R_> struct Vector3 { typedef typename R_::Ray_3 Ray_3; Vector3() {} explicit Vector3(const Ray_3& r); };
template < class R_ > class LineC3 { typedef typename R_::Vector_3 Vector_3; std::pair<int, Vector_3> x; };
template < class R_ > class RayH3 { typedef typename R_::Vector_3 Vector_3; std::pair<int, Vector_3> x; };
template <typename Kernel > struct Homogeneous_base { typedef LineC3<Kernel> Line_3; typedef RayH3<Kernel> Ray_3; };
template < typename RT_> struct Simple_homogeneous : public Homogeneous_base< Simple_homogeneous<RT_> > { typedef Vector3<Simple_homogeneous<RT_> > Vector_3; };
int main() { typedef Simple_homogeneous<double> R; R::Line_3 l3; }
|