Nico Rieck: this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@188192 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -354,9 +354,9 @@ template <class T> unspecified2 end(const valarray<T>& v);
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
template<class _Tp> class _LIBCPP_TYPE_VIS valarray;
|
||||
template<class _Tp> class _LIBCPP_TYPE_VIS_ONLY valarray;
|
||||
|
||||
class _LIBCPP_TYPE_VIS slice
|
||||
class _LIBCPP_TYPE_VIS_ONLY slice
|
||||
{
|
||||
size_t __start_;
|
||||
size_t __size_;
|
||||
@@ -381,11 +381,11 @@ public:
|
||||
_LIBCPP_INLINE_VISIBILITY size_t stride() const {return __stride_;}
|
||||
};
|
||||
|
||||
template <class _Tp> class _LIBCPP_TYPE_VIS slice_array;
|
||||
template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY slice_array;
|
||||
class _LIBCPP_TYPE_VIS gslice;
|
||||
template <class _Tp> class _LIBCPP_TYPE_VIS gslice_array;
|
||||
template <class _Tp> class _LIBCPP_TYPE_VIS mask_array;
|
||||
template <class _Tp> class _LIBCPP_TYPE_VIS indirect_array;
|
||||
template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY gslice_array;
|
||||
template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY mask_array;
|
||||
template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY indirect_array;
|
||||
|
||||
template <class _Tp>
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
@@ -671,7 +671,7 @@ public:
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t size() const {return __size_;}
|
||||
|
||||
template <class> friend class _LIBCPP_TYPE_VIS valarray;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS_ONLY valarray;
|
||||
};
|
||||
|
||||
template <class _ValExpr>
|
||||
@@ -786,7 +786,7 @@ template<class _Tp>
|
||||
struct __is_val_expr<valarray<_Tp> > : true_type {};
|
||||
|
||||
template<class _Tp>
|
||||
class _LIBCPP_TYPE_VIS valarray
|
||||
class _LIBCPP_TYPE_VIS_ONLY valarray
|
||||
{
|
||||
public:
|
||||
typedef _Tp value_type;
|
||||
@@ -976,12 +976,12 @@ public:
|
||||
void resize(size_t __n, value_type __x = value_type());
|
||||
|
||||
private:
|
||||
template <class> friend class _LIBCPP_TYPE_VIS valarray;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS slice_array;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS gslice_array;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS mask_array;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS_ONLY valarray;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS_ONLY slice_array;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS_ONLY gslice_array;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS_ONLY mask_array;
|
||||
template <class> friend class __mask_expr;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS indirect_array;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS_ONLY indirect_array;
|
||||
template <class> friend class __indirect_expr;
|
||||
template <class> friend class __val_expr;
|
||||
|
||||
@@ -1006,6 +1006,10 @@ private:
|
||||
end(const valarray<_Up>& __v);
|
||||
};
|
||||
|
||||
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS valarray<size_t>::valarray(size_t))
|
||||
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS valarray<size_t>::~valarray())
|
||||
_LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void valarray<size_t>::resize(size_t, size_t))
|
||||
|
||||
template <class _Op, class _Tp>
|
||||
struct _UnaryOp<_Op, valarray<_Tp> >
|
||||
{
|
||||
@@ -1091,7 +1095,7 @@ struct _BinaryOp<_Op, valarray<_Tp>, valarray<_Tp> >
|
||||
// slice_array
|
||||
|
||||
template <class _Tp>
|
||||
class _LIBCPP_TYPE_VIS slice_array
|
||||
class _LIBCPP_TYPE_VIS_ONLY slice_array
|
||||
{
|
||||
public:
|
||||
typedef _Tp value_type;
|
||||
@@ -1461,7 +1465,7 @@ private:
|
||||
// gslice_array
|
||||
|
||||
template <class _Tp>
|
||||
class _LIBCPP_TYPE_VIS gslice_array
|
||||
class _LIBCPP_TYPE_VIS_ONLY gslice_array
|
||||
{
|
||||
public:
|
||||
typedef _Tp value_type;
|
||||
@@ -1790,7 +1794,7 @@ gslice_array<_Tp>::operator=(const value_type& __x) const
|
||||
// mask_array
|
||||
|
||||
template <class _Tp>
|
||||
class _LIBCPP_TYPE_VIS mask_array
|
||||
class _LIBCPP_TYPE_VIS_ONLY mask_array
|
||||
{
|
||||
public:
|
||||
typedef _Tp value_type;
|
||||
@@ -2134,7 +2138,7 @@ public:
|
||||
// indirect_array
|
||||
|
||||
template <class _Tp>
|
||||
class _LIBCPP_TYPE_VIS indirect_array
|
||||
class _LIBCPP_TYPE_VIS_ONLY indirect_array
|
||||
{
|
||||
public:
|
||||
typedef _Tp value_type;
|
||||
@@ -2485,7 +2489,7 @@ public:
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t size() const {return __1d_.size();}
|
||||
|
||||
template <class> friend class _LIBCPP_TYPE_VIS valarray;
|
||||
template <class> friend class _LIBCPP_TYPE_VIS_ONLY valarray;
|
||||
};
|
||||
|
||||
template<class _ValExpr>
|
||||
@@ -4770,10 +4774,6 @@ end(const valarray<_Tp>& __v)
|
||||
return __v.__end_;
|
||||
}
|
||||
|
||||
_LIBCPP_EXTERN_TEMPLATE(valarray<size_t>::valarray(size_t))
|
||||
_LIBCPP_EXTERN_TEMPLATE(valarray<size_t>::~valarray())
|
||||
_LIBCPP_EXTERN_TEMPLATE(void valarray<size_t>::resize(size_t, size_t))
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
#endif // _LIBCPP_VALARRAY
|
||||
|
Reference in New Issue
Block a user