/* Copyright (C) 2015 Povilas Kanapickas
This file is part of cppreference-doc
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
Unported License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
*/
#ifndef CPPREFERENCE_VALARRAY_H
#define CPPREFERENCE_VALARRAY_H
#if CPPREFERENCE_STDVER >= 2011
#include // for std::initializer_list
#endif
namespace std {
template
class valarray {
public:
typedef T value_type;
valarray();
explicit valarray(std::size_t count);
valarray(const T& val, std::size_t count);
valarray(const T* vals, std::size_t count);
valarray(const valarray& other);
#if CPPREFERENCE_STDVER>= 2011
valarray(valarray&& other);
#endif
valarray(const std::slice_array& array);
valarray(const std::gslice_array& array);
valarray(const std::mask_array& array);
valarray(const std::indirect_array& array);
#if CPPREFERENCE_STDVER>= 2011
valarray(std::initializer_list ilist);
#endif
~valarray();
valarray& operator=(const valarray& other);
#if CPPREFERENCE_STDVER>= 2011
valarray& operator=(valarray&& other);
#endif
valarray& operator=(const T& val);
valarray& operator=(const std::slice_array& other);
valarray& operator=(const std::gslice_array& other);
valarray& operator=(const std::mask_array& other);
valarray& operator=(const std::indirect_array& other);
#if CPPREFERENCE_STDVER>= 2011
valarray& operator=(std::initializer_list il);
#endif
T operator[](std::size_t pos) const;
const T& operator[](std::size_t pos) const;
T& operator[](std::size_t pos);
std::valarray operator[](std::slice slicearr) const;
std::slice_array operator[](std::slice slicearr);
std::valarray operator[](const std::gslice& gslicearr) const;
std::gslice_array operator[](const std::gslice& gslicearr);
std::valarray operator[](const valarray& boolarr) const;
std::mask_array operator[](const valarray& boolarr);
std::valarray operator[](const valarray<:size_t>& indarr) const;
std::indirect_array operator[](const valarray<:size_t>& indarr);
valarray operator+() const;
valarray operator-() const;
valarray operator~() const;
valarray operator!() const;
valarray operator+=(const valarray& v);
valarray operator-=(const valarray& v);
valarray operator*=(const valarray& v);
valarray operator/=(const valarray& v);
valarray operator%=(const valarray& v);
valarray operator&=(const valarray& v);
valarray operator|=(const valarray& v);
valarray operator^=(const valarray& v);
valarray operator<<=(const valarray& v);
valarray operator>>=(const valarray& v);
valarray operator+=(const T& val);
valarray operator-=(const T& val);
valarray operator*=(const T& val);
valarray operator/=(const T& val);
valarray operator%=(const T& val);
valarray operator&=(const T& val);
valarray operator|=(const T& val);
valarray operator^=(const T& val);
valarray operator<<=(const T& val);
valarray operator>>=(const T& val);
void swap(valarray& other);
std::size_t size() const;
void resize(std::size_t count, T value = T());
T sum() const;
T min() const;
T max() const;
valarray shift(int count) const;
valarray cshift(int count) const;
valarray apply(T func(T)) const;
valarray apply(T func(const T&)) const;
};
template
void swap(valarray& lhs, valarray& rhs);
struct __unspecified;
#if CPPREFERENCE_STDVER>= 2011
template
__unspecified begin(valarray& v);
template
__unspecified begin(const valarray& v);
template
__unspecified end(valarray& v);
template
__unspecified end(const valarray& v);
#endif
template std::valarray operator+ (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator- (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator* (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator/ (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator% (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator& (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator| (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator^ (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator<<(const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator>> (const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator&&(const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator||(const std::valarray& lhs, const std::valarray& rhs);
template std::valarray operator+ (const T& val, const std::valarray& rhs);
template std::valarray operator- (const T& val, const std::valarray& rhs);
template std::valarray operator* (const T& val, const std::valarray& rhs);
template std::valarray operator/ (const T& val, const std::valarray& rhs);
template std::valarray operator% (const T& val, const std::valarray& rhs);
template std::valarray operator& (const T& val, const std::valarray& rhs);
template std::valarray operator| (const T& val, const std::valarray& rhs);
template std::valarray operator^ (const T& val, const std::valarray& rhs);
template std::valarray operator<<(const T& val, const std::valarray& rhs);
template std::valarray operator>> (const T& val, const std::valarray& rhs);
template std::valarray operator&&(const T& val, const std::valarray& rhs);
template std::valarray operator||(const T& val, const std::valarray& rhs);
template std::valarray operator+ (const std::valarray& lhs, const T& rhs);
template std::valarray operator- (const std::valarray& lhs, const T& val);
template std::valarray operator* (const std::valarray& lhs, const T& val);
template std::valarray operator/ (const std::valarray& lhs, const T& val);
template std::valarray operator% (const std::valarray& lhs, const T& val);
template std::valarray operator& (const std::valarray& lhs, const T& val);
template std::valarray operator| (const std::valarray& lhs, const T& val);
template std::valarray operator^ (const std::valarray& lhs, const T& val);
template std::valarray operator<<(const std::valarray& lhs, const T& val);
template std::valarray operator>> (const std::valarray& lhs, const T& val);
template std::valarray operator&&(const std::valarray& lhs, const T& val);
template std::valarray operator||(const std::valarray& lhs, const T& val);
template
valarray operator==(const valarray& lhs, const valarray& rhs);
template
valarray operator!=(const valarray& lhs, const valarray& rhs);
template
valarray operator<(const valarray& lhs, const valarray& rhs);
template
valarray operator<=(const valarray& lhs, const valarray& rhs);
template
valarray operator>(const valarray& lhs, const valarray& rhs);
template
valarray operator>=(const valarray& lhs, const valarray& rhs);
template
valarray operator==(const T& lhsv, const valarray& rhs);
template
valarray operator!=(const T& lhsv, const valarray& rhs);
template
valarray operator<(const T& lhsv, const valarray& rhs);
template
valarray operator<=(const T& lhsv, const valarray& rhs);
template
valarray operator>(const T& lhsv, const valarray& rhs);
template
valarray operator>=(const T& lhsv, const valarray& rhs);
template
valarray operator==(const valarray& lhs, const T& rhsv);
template
valarray operator!=(const valarray& lhs, const T& rhsv);
template
valarray operator<(const valarray& lhs, const T& rhsv);
template
valarray operator<=(const valarray& lhs, const T& rhsv);
template
valarray operator>(const valarray