LSST Applications g0b6bd0c080+a72a5dd7e6,g1182afd7b4+2a019aa3bb,g17e5ecfddb+2b8207f7de,g1d67935e3f+06cf436103,g38293774b4+ac198e9f13,g396055baef+6a2097e274,g3b44f30a73+6611e0205b,g480783c3b1+98f8679e14,g48ccf36440+89c08d0516,g4b93dc025c+98f8679e14,g5c4744a4d9+a302e8c7f0,g613e996a0d+e1c447f2e0,g6c8d09e9e7+25247a063c,g7271f0639c+98f8679e14,g7a9cd813b8+124095ede6,g9d27549199+a302e8c7f0,ga1cf026fa3+ac198e9f13,ga32aa97882+7403ac30ac,ga786bb30fb+7a139211af,gaa63f70f4e+9994eb9896,gabf319e997+ade567573c,gba47b54d5d+94dc90c3ea,gbec6a3398f+06cf436103,gc6308e37c7+07dd123edb,gc655b1545f+ade567573c,gcc9029db3c+ab229f5caf,gd01420fc67+06cf436103,gd877ba84e5+06cf436103,gdb4cecd868+6f279b5b48,ge2d134c3d5+cc4dbb2e3f,ge448b5faa6+86d1ceac1d,gecc7e12556+98f8679e14,gf3ee170dca+25247a063c,gf4ac96e456+ade567573c,gf9f5ea5b4d+ac198e9f13,gff490e6085+8c2580be5c,w.2022.27
LSST Data Management Base Package
aggregates.h
Go to the documentation of this file.
1// -*- lsst-c++ -*-
2/*
3 * LSST Data Management System
4 * Copyright 2008-2014 LSST Corporation.
5 *
6 * This product includes software developed by the
7 * LSST Project (http://www.lsst.org/).
8 *
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the LSST License Statement and
20 * the GNU General Public License along with this program. If not,
21 * see <http://www.lsstcorp.org/LegalNotices/>.
22 */
23#ifndef AFW_TABLE_aggregates_h_INCLUDED
24#define AFW_TABLE_aggregates_h_INCLUDED
25
27
30#include "lsst/geom.h"
31
32namespace lsst {
33namespace afw {
34namespace geom {
35
36namespace ellipses {
37
38class Quadrupole;
39
40} // namespace ellipses
41} // namespace geom
42
43namespace table {
44
48template <typename T>
49class PointKey : public FunctorKey<lsst::geom::Point<T, 2> > {
50public:
60 static PointKey addFields(Schema& schema, std::string const& name, std::string const& doc,
61 std::string const& unit);
62
64 PointKey() noexcept : _x(), _y() {}
65
67 PointKey(Key<T> const& x, Key<T> const& y) noexcept : _x(x), _y(y) {}
68
69 PointKey(PointKey const&) noexcept = default;
70 PointKey(PointKey&&) noexcept = default;
71 PointKey& operator=(PointKey const&) noexcept = default;
72 PointKey& operator=(PointKey&&) noexcept = default;
73 ~PointKey() noexcept override = default;
74
83 PointKey(SubSchema const& s) : _x(s["x"]), _y(s["y"]) {}
84
86 lsst::geom::Point<T, 2> get(BaseRecord const& record) const override;
87
89 void set(BaseRecord& record, lsst::geom::Point<T, 2> const& value) const override;
90
92
93 bool operator==(PointKey<T> const& other) const noexcept { return _x == other._x && _y == other._y; }
94 bool operator!=(PointKey<T> const& other) const noexcept { return !(*this == other); }
96
98 std::size_t hash_value() const noexcept {
99 // Completely arbitrary seed
100 return utils::hashCombine(17, _x, _y);
101 }
102
104 bool isValid() const noexcept { return _x.isValid() && _y.isValid(); }
105
107 Key<T> getX() const noexcept { return _x; }
108
110 Key<T> getY() const noexcept { return _y; }
111
112private:
113 Key<T> _x;
114 Key<T> _y;
115};
116
119
125template <typename Box>
126class BoxKey : public FunctorKey<Box> {
127public:
129 using Element = typename Box::Element;
130
144 static BoxKey addFields(Schema& schema, std::string const& name, std::string const& doc,
145 std::string const& unit);
146
148 BoxKey() noexcept = default;
149
151 BoxKey(PointKey<Element> const& min, PointKey<Element> const& max) noexcept : _min(min), _max(max) {}
152
161 BoxKey(SubSchema const& s) : _min(s["min"]), _max(s["max"]) {}
162
163 BoxKey(BoxKey const&) noexcept = default;
164 BoxKey(BoxKey&&) noexcept = default;
165 BoxKey& operator=(BoxKey const&) noexcept = default;
166 BoxKey& operator=(BoxKey&&) noexcept = default;
167 ~BoxKey() noexcept override = default;
168
170 std::size_t hash_value() const noexcept {
171 // Completely arbitrary seed
172 return utils::hashCombine(17, _min, _max);
173 }
174
176 Box get(BaseRecord const& record) const override;
177
179 void set(BaseRecord& record, Box const& value) const override;
180
182
183 bool operator==(BoxKey const& other) const noexcept { return _min == other._min && _max == other._max; }
184 bool operator!=(BoxKey const& other) const noexcept { return !(*this == other); }
186
188 bool isValid() const noexcept { return _min.isValid() && _max.isValid(); }
189
191 PointKey<Element> getMin() const noexcept { return _min; }
192
194 PointKey<Element> getMax() const noexcept { return _max; }
195
196private:
199};
200
203
210class CoordKey : public FunctorKey<lsst::geom::SpherePoint> {
211public:
221
223 CoordKey() noexcept : _ra(), _dec() {}
224
227 : _ra(ra), _dec(dec) {}
228
237 CoordKey(SubSchema const& s) : _ra(s["ra"]), _dec(s["dec"]) {}
238
239 CoordKey(CoordKey const&) noexcept = default;
240 CoordKey(CoordKey&&) noexcept = default;
241 CoordKey& operator=(CoordKey const&) noexcept = default;
242 CoordKey& operator=(CoordKey&&) noexcept = default;
243 ~CoordKey() noexcept override = default;
244
246 lsst::geom::SpherePoint get(BaseRecord const& record) const override;
247
249 void set(BaseRecord& record, lsst::geom::SpherePoint const& value) const override;
250
252
253 bool operator==(CoordKey const& other) const noexcept { return _ra == other._ra && _dec == other._dec; }
254 bool operator!=(CoordKey const& other) const noexcept { return !(*this == other); }
256
258 std::size_t hash_value() const noexcept {
259 // Completely arbitrary seed
260 return utils::hashCombine(17, _ra, _dec);
261 }
262
263 bool isValid() const noexcept { return _ra.isValid() && _dec.isValid(); }
264
266
267 Key<lsst::geom::Angle> getRa() const noexcept { return _ra; }
268 Key<lsst::geom::Angle> getDec() const noexcept { return _dec; }
270
271private:
274};
275
278
282class QuadrupoleKey : public FunctorKey<lsst::afw::geom::ellipses::Quadrupole> {
283public:
295 static QuadrupoleKey addFields(Schema& schema, std::string const& name, std::string const& doc,
297
299 QuadrupoleKey() noexcept : _ixx(), _iyy(), _ixy() {}
300
302 QuadrupoleKey(Key<double> const& ixx, Key<double> const& iyy, Key<double> const& ixy) noexcept
303 : _ixx(ixx), _iyy(iyy), _ixy(ixy) {}
304
313 QuadrupoleKey(SubSchema const& s) : _ixx(s["xx"]), _iyy(s["yy"]), _ixy(s["xy"]) {}
314
315 QuadrupoleKey(QuadrupoleKey const&) noexcept = default;
316 QuadrupoleKey(QuadrupoleKey&&) noexcept = default;
317 QuadrupoleKey& operator=(QuadrupoleKey const&) noexcept = default;
318 QuadrupoleKey& operator=(QuadrupoleKey&&) noexcept = default;
319 ~QuadrupoleKey() noexcept override = default;
320
322 geom::ellipses::Quadrupole get(BaseRecord const& record) const override;
323
325 void set(BaseRecord& record, geom::ellipses::Quadrupole const& value) const override;
326
328
329 bool operator==(QuadrupoleKey const& other) const noexcept {
330 return _ixx == other._ixx && _iyy == other._iyy && _ixy == other._ixy;
331 }
332 bool operator!=(QuadrupoleKey const& other) const noexcept { return !(*this == other); }
334
336 std::size_t hash_value() const noexcept {
337 // Completely arbitrary seed
338 return utils::hashCombine(17, _ixx, _iyy, _ixy);
339 }
340
342 bool isValid() const noexcept { return _ixx.isValid() && _iyy.isValid() && _ixy.isValid(); }
343
345
346 Key<double> getIxx() const noexcept { return _ixx; }
347 Key<double> getIyy() const noexcept { return _iyy; }
348 Key<double> getIxy() const noexcept { return _ixy; }
350
351private:
352 Key<double> _ixx;
353 Key<double> _iyy;
354 Key<double> _ixy;
355};
356
360class EllipseKey : public FunctorKey<lsst::afw::geom::ellipses::Ellipse> {
361public:
372 static EllipseKey addFields(Schema& schema, std::string const& name, std::string const& doc,
373 std::string const& unit);
374
376 EllipseKey() noexcept : _qKey(), _pKey() {}
377
379 EllipseKey(QuadrupoleKey const& qKey, PointKey<double> const& pKey) noexcept : _qKey(qKey), _pKey(pKey) {}
380
389 EllipseKey(SubSchema const& s) : _qKey(s), _pKey(s) {}
390
391 EllipseKey(EllipseKey const&) noexcept = default;
392 EllipseKey(EllipseKey&&) noexcept = default;
393 EllipseKey& operator=(EllipseKey const&) noexcept = default;
394 EllipseKey& operator=(EllipseKey&&) noexcept = default;
395 ~EllipseKey() noexcept override = default;
396
398 geom::ellipses::Ellipse get(BaseRecord const& record) const override;
399
401 void set(BaseRecord& record, geom::ellipses::Ellipse const& value) const override;
402
404
405 bool operator==(EllipseKey const& other) const noexcept {
406 return _qKey == other._qKey && _pKey == other._pKey;
407 }
408 bool operator!=(EllipseKey const& other) const noexcept { return !(*this == other); }
410
412 std::size_t hash_value() const noexcept {
413 // Completely arbitrary seed
414 return utils::hashCombine(17, _qKey, _pKey);
415 }
416
418 bool isValid() const noexcept { return _qKey.isValid() && _pKey.isValid(); }
419
421
422 QuadrupoleKey getCore() const noexcept { return _qKey; }
423 PointKey<double> getCenter() const noexcept { return _pKey; }
425
426private:
427 QuadrupoleKey _qKey;
428 PointKey<double> _pKey;
429};
430
431template <typename T, int N>
432class CovarianceMatrixKey : public FunctorKey<Eigen::Matrix<T, N, N> > {
433public:
437
452 std::string const& unit, bool diagonalOnly = false);
453
469 NameArray const& units, bool diagonalOnly = false);
470
473
492 explicit CovarianceMatrixKey(ErrKeyArray const& err,
494
506 CovarianceMatrixKey(SubSchema const& s, NameArray const& names);
507
512 ~CovarianceMatrixKey() noexcept override;
513
515 Eigen::Matrix<T, N, N> get(BaseRecord const& record) const override;
516
518 void set(BaseRecord& record, Eigen::Matrix<T, N, N> const& value) const override;
519
521 T getElement(BaseRecord const& record, int i, int j) const;
522
524 void setElement(BaseRecord& record, int i, int j, T value) const;
525
532 bool isValid() const noexcept;
533
535
536 bool operator==(CovarianceMatrixKey const& other) const noexcept;
537 bool operator!=(CovarianceMatrixKey const& other) const noexcept { return !(*this == other); }
539
541 std::size_t hash_value() const noexcept;
542
543private:
544 ErrKeyArray _err;
546};
547} // namespace table
548} // namespace afw
549} // namespace lsst
550
551namespace std {
552template <typename T>
553struct hash<lsst::afw::table::PointKey<T>> {
556 size_t operator()(argument_type const& obj) const noexcept { return obj.hash_value(); }
557};
558
559template <typename T>
560struct hash<lsst::afw::table::BoxKey<T>> {
563 size_t operator()(argument_type const& obj) const noexcept { return obj.hash_value(); }
564};
565
566template <>
567struct hash<lsst::afw::table::CoordKey> {
570 size_t operator()(argument_type const& obj) const noexcept { return obj.hash_value(); }
571};
572
573template <>
574struct hash<lsst::afw::table::QuadrupoleKey> {
577 size_t operator()(argument_type const& obj) const noexcept { return obj.hash_value(); }
578};
579
580template <>
581struct hash<lsst::afw::table::EllipseKey> {
584 size_t operator()(argument_type const& obj) const noexcept { return obj.hash_value(); }
585};
586
587template <typename T, int N>
588struct hash<lsst::afw::table::CovarianceMatrixKey<T, N>> {
591 size_t operator()(argument_type const& obj) const noexcept { return obj.hash_value(); }
592};
593} // namespace std
594
595#endif // !AFW_TABLE_aggregates_h_INCLUDED
table::Key< std::string > name
Definition: Amplifier.cc:116
int min
int max
double x
double dec
Definition: Match.cc:41
std::string prefix
Definition: SchemaMapper.cc:72
int y
Definition: SpanSet.cc:48
table::Schema schema
Definition: python.h:134
Base class for all records.
Definition: BaseRecord.h:31
A FunctorKey used to get or set a lsst::geom::Box2I or Box2D from a (min, max) pair of PointKeys.
Definition: aggregates.h:126
BoxKey(BoxKey const &) noexcept=default
bool operator!=(BoxKey const &other) const noexcept
Definition: aggregates.h:184
bool isValid() const noexcept
Return True if both the min and max PointKeys are valid.
Definition: aggregates.h:188
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: aggregates.h:170
Box get(BaseRecord const &record) const override
Get a Box from the given record.
Definition: aggregates.cc:68
static BoxKey addFields(Schema &schema, std::string const &name, std::string const &doc, std::string const &unit)
Add _min_x, _min_y, _max_x, _max_y fields to a Schema, and return a BoxKey that points to them.
Definition: aggregates.cc:60
PointKey< Element > getMin() const noexcept
Return the underlying min PointKey.
Definition: aggregates.h:191
PointKey< Element > getMax() const noexcept
Return the underlying max PointKey.
Definition: aggregates.h:194
typename Box::Element Element
Type of coordinate elements (i.e. int or double).
Definition: aggregates.h:129
BoxKey() noexcept=default
Default constructor; instance will not be usable unless subsequently assigned to.
bool operator==(BoxKey const &other) const noexcept
Compare the FunctorKey for equality with another, using the underlying x and y Keys.
Definition: aggregates.h:183
void set(BaseRecord &record, Box const &value) const override
Set a Box in the given record.
Definition: aggregates.cc:73
BoxKey(BoxKey &&) noexcept=default
BoxKey(SubSchema const &s)
Construct from a subschema, assuming _min_x, _max_x, _min_y, _max_y subfields.
Definition: aggregates.h:161
A FunctorKey used to get or set celestial coordinates from a pair of lsst::geom::Angle keys.
Definition: aggregates.h:210
bool operator!=(CoordKey const &other) const noexcept
Definition: aggregates.h:254
CoordKey(Key< lsst::geom::Angle > const &ra, Key< lsst::geom::Angle > const &dec) noexcept
Construct from a pair of Keys.
Definition: aggregates.h:226
static CoordKey addFields(afw::table::Schema &schema, std::string const &name, std::string const &doc)
Add a pair of _ra, _dec fields to a Schema, and return a CoordKey that points to them.
Definition: aggregates.cc:83
CoordKey(SubSchema const &s)
Construct from a subschema, assuming ra and dec subfields.
Definition: aggregates.h:237
CoordKey() noexcept
Default constructor; instance will not be usable unless subsequently assigned to.
Definition: aggregates.h:223
void set(BaseRecord &record, lsst::geom::SpherePoint const &value) const override
Set an lsst::geom::SpherePoint in the given record.
Definition: aggregates.cc:93
Key< lsst::geom::Angle > getDec() const noexcept
Definition: aggregates.h:268
Key< lsst::geom::Angle > getRa() const noexcept
Return a constituent Key.
Definition: aggregates.h:267
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: aggregates.h:258
CoordKey(CoordKey &&) noexcept=default
bool isValid() const noexcept
Definition: aggregates.h:263
CoordKey(CoordKey const &) noexcept=default
lsst::geom::SpherePoint get(BaseRecord const &record) const override
Get an lsst::geom::SpherePoint from the given record.
Definition: aggregates.cc:89
CovarianceMatrixKey()
Construct an invalid instance; must assign before subsequent use.
CovarianceMatrixKey(CovarianceMatrixKey const &)
Eigen::Matrix< T, N, N > get(BaseRecord const &record) const override
Get a covariance matrix from the given record.
Definition: aggregates.cc:259
void setElement(BaseRecord &record, int i, int j, T value) const
Set the element in row i and column j.
Definition: aggregates.cc:349
CovarianceMatrixKey & operator=(CovarianceMatrixKey &&)
T getElement(BaseRecord const &record, int i, int j) const
Return the element in row i and column j.
Definition: aggregates.cc:336
void set(BaseRecord &record, Eigen::Matrix< T, N, N > const &value) const override
Set a covariance matrix in the given record (uses only the lower triangle of the given matrix)
Definition: aggregates.cc:278
~CovarianceMatrixKey() noexcept override
CovarianceMatrixKey(CovarianceMatrixKey &&)
static CovarianceMatrixKey addFields(Schema &schema, std::string const &prefix, NameArray const &names, std::string const &unit, bool diagonalOnly=false)
Add covariance matrix fields to a Schema, and return a CovarianceMatrixKey to manage them.
Definition: aggregates.cc:141
std::vector< Key< T > > ErrKeyArray
Definition: aggregates.h:434
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: aggregates.cc:329
std::vector< Key< T > > CovarianceKeyArray
Definition: aggregates.h:435
bool isValid() const noexcept
Return True if all the constituent error Keys are valid.
Definition: aggregates.cc:294
CovarianceMatrixKey & operator=(CovarianceMatrixKey const &)
A FunctorKey used to get or set a geom::ellipses::Ellipse from an (xx,yy,xy,x,y) tuple of Keys.
Definition: aggregates.h:360
void set(BaseRecord &record, geom::ellipses::Ellipse const &value) const override
Set an Ellipse in the given record.
Definition: aggregates.cc:133
EllipseKey(EllipseKey &&) noexcept=default
static EllipseKey addFields(Schema &schema, std::string const &name, std::string const &doc, std::string const &unit)
Add a set of _xx, _yy, _xy, _x, _y fields to a Schema, and return an EllipseKey that points to them.
Definition: aggregates.cc:122
PointKey< double > getCenter() const noexcept
Definition: aggregates.h:423
geom::ellipses::Ellipse get(BaseRecord const &record) const override
Get an Ellipse from the given record.
Definition: aggregates.cc:129
EllipseKey() noexcept
Default constructor; instance will not be usable unless subsequently assigned to.
Definition: aggregates.h:376
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: aggregates.h:412
bool operator!=(EllipseKey const &other) const noexcept
Definition: aggregates.h:408
EllipseKey(EllipseKey const &) noexcept=default
EllipseKey(SubSchema const &s)
Construct from a subschema, assuming (xx, yy, xy, x, y) subfields.
Definition: aggregates.h:389
QuadrupoleKey getCore() const noexcept
Return constituent FunctorKeys.
Definition: aggregates.h:422
bool isValid() const noexcept
Return True if all the constituent Keys are valid.
Definition: aggregates.h:418
EllipseKey(QuadrupoleKey const &qKey, PointKey< double > const &pKey) noexcept
Construct from individual Keys.
Definition: aggregates.h:379
Convenience base class that combines the OutputFunctorKey and InputFunctorKey.
Definition: FunctorKey.h:74
A class used as a handle to a particular field in a table.
Definition: Key.h:53
bool isValid() const noexcept
Return true if the key was initialized to valid offset.
Definition: Key.h:97
A FunctorKey used to get or set a lsst::geom::Point from an (x,y) pair of int or double Keys.
Definition: aggregates.h:49
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: aggregates.h:98
PointKey() noexcept
Default constructor; instance will not be usable unless subsequently assigned to.
Definition: aggregates.h:64
Key< T > getY() const noexcept
Return the underlying y Key.
Definition: aggregates.h:110
PointKey(PointKey const &) noexcept=default
void set(BaseRecord &record, lsst::geom::Point< T, 2 > const &value) const override
Set a Point in the given record.
Definition: aggregates.cc:49
PointKey(PointKey &&) noexcept=default
bool operator!=(PointKey< T > const &other) const noexcept
Definition: aggregates.h:94
static PointKey addFields(Schema &schema, std::string const &name, std::string const &doc, std::string const &unit)
Add a pair of _x, _y fields to a Schema, and return a PointKey that points to them.
Definition: aggregates.cc:36
PointKey(Key< T > const &x, Key< T > const &y) noexcept
Construct from a pair of Keys.
Definition: aggregates.h:67
bool operator==(PointKey< T > const &other) const noexcept
Compare the FunctorKey for equality with another, using the underlying x and y Keys.
Definition: aggregates.h:93
Key< T > getX() const noexcept
Return the underlying x Key.
Definition: aggregates.h:107
bool isValid() const noexcept
Return True if both the x and y Keys are valid.
Definition: aggregates.h:104
lsst::geom::Point< T, 2 > get(BaseRecord const &record) const override
Get a Point from the given record.
Definition: aggregates.cc:44
A FunctorKey used to get or set a geom::ellipses::Quadrupole from a tuple of constituent Keys.
Definition: aggregates.h:282
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: aggregates.h:336
Key< double > getIxx() const noexcept
Return a constituent Key.
Definition: aggregates.h:346
geom::ellipses::Quadrupole get(BaseRecord const &record) const override
Get a Quadrupole from the given record.
Definition: aggregates.cc:110
QuadrupoleKey() noexcept
Default constructor; instance will not be usable unless subsequently assigned to.
Definition: aggregates.h:299
QuadrupoleKey(SubSchema const &s)
Construct from a subschema with appropriate subfields.
Definition: aggregates.h:313
QuadrupoleKey(QuadrupoleKey const &) noexcept=default
Key< double > getIxy() const noexcept
Definition: aggregates.h:348
Key< double > getIyy() const noexcept
Definition: aggregates.h:347
void set(BaseRecord &record, geom::ellipses::Quadrupole const &value) const override
Set a Quadrupole in the given record.
Definition: aggregates.cc:114
static QuadrupoleKey addFields(Schema &schema, std::string const &name, std::string const &doc, CoordinateType coordType=CoordinateType::PIXEL)
Add a set of quadrupole subfields to a schema and return a QuadrupoleKey that points to them.
Definition: aggregates.cc:100
QuadrupoleKey(Key< double > const &ixx, Key< double > const &iyy, Key< double > const &ixy) noexcept
Construct from individual Keys.
Definition: aggregates.h:302
QuadrupoleKey(QuadrupoleKey &&) noexcept=default
bool operator!=(QuadrupoleKey const &other) const noexcept
Definition: aggregates.h:332
bool isValid() const noexcept
Return True if all the constituent Keys are valid.
Definition: aggregates.h:342
Defines the fields and offsets for a table.
Definition: Schema.h:51
A proxy type for name lookups in a Schema.
Definition: Schema.h:367
A coordinate class intended to represent absolute positions (2-d specialization).
Definition: Point.h:211
Point in an unspecified spherical coordinate system.
Definition: SpherePoint.h:57
CoordinateType
Enum used to set units for geometric FunctorKeys.
Definition: aggregates.h:277
std::size_t hashCombine(std::size_t seed) noexcept
Combine hashes.
Definition: hashCombine.h:35
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: common.h:45
A base class for image defects.
STL namespace.
size_t operator()(argument_type const &obj) const noexcept
Definition: aggregates.h:563
size_t operator()(argument_type const &obj) const noexcept
Definition: aggregates.h:570
size_t operator()(argument_type const &obj) const noexcept
Definition: aggregates.h:591
size_t operator()(argument_type const &obj) const noexcept
Definition: aggregates.h:584
size_t operator()(argument_type const &obj) const noexcept
Definition: aggregates.h:556
size_t operator()(argument_type const &obj) const noexcept
Definition: aggregates.h:577