mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
core: CV_NODISCARD macro with semantic of [[nodiscard]] attr
[[nodiscard]] is defined in C++17. There is fallback alias for modern GCC / Clang compilers.
This commit is contained in:
parent
4a3dfffd46
commit
b0ee5d9023
@ -406,6 +406,24 @@ Cv64suf;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************************\
|
||||||
|
* CV_NODISCARD attribute *
|
||||||
|
* encourages the compiler to issue a warning if the return value is discarded (C++17) *
|
||||||
|
\****************************************************************************************/
|
||||||
|
#ifndef CV_NODISCARD
|
||||||
|
# if defined(__GNUC__)
|
||||||
|
# define CV_NODISCARD __attribute__((__warn_unused_result__)) // at least available with GCC 3.4
|
||||||
|
# elif defined(__clang__) && defined(__has_attribute)
|
||||||
|
# if __has_attribute(__warn_unused_result__)
|
||||||
|
# define CV_NODISCARD __attribute__((__warn_unused_result__))
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#ifndef CV_NODISCARD
|
||||||
|
# define CV_NODISCARD /* nothing by default */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************************\
|
/****************************************************************************************\
|
||||||
* C++ 11 *
|
* C++ 11 *
|
||||||
\****************************************************************************************/
|
\****************************************************************************************/
|
||||||
|
@ -1171,7 +1171,7 @@ public:
|
|||||||
The method creates a full copy of the array. The original step[] is not taken into account. So, the
|
The method creates a full copy of the array. The original step[] is not taken into account. So, the
|
||||||
array copy is a continuous array occupying total()*elemSize() bytes.
|
array copy is a continuous array occupying total()*elemSize() bytes.
|
||||||
*/
|
*/
|
||||||
Mat clone() const;
|
Mat clone() const CV_NODISCARD;
|
||||||
|
|
||||||
/** @brief Copies the matrix to another one.
|
/** @brief Copies the matrix to another one.
|
||||||
|
|
||||||
@ -2262,7 +2262,7 @@ public:
|
|||||||
Mat_ row(int y) const;
|
Mat_ row(int y) const;
|
||||||
Mat_ col(int x) const;
|
Mat_ col(int x) const;
|
||||||
Mat_ diag(int d=0) const;
|
Mat_ diag(int d=0) const;
|
||||||
Mat_ clone() const;
|
Mat_ clone() const CV_NODISCARD;
|
||||||
|
|
||||||
//! overridden forms of Mat::elemSize() etc.
|
//! overridden forms of Mat::elemSize() etc.
|
||||||
size_t elemSize() const;
|
size_t elemSize() const;
|
||||||
@ -2441,7 +2441,7 @@ public:
|
|||||||
static UMat diag(const UMat& d);
|
static UMat diag(const UMat& d);
|
||||||
|
|
||||||
//! returns deep copy of the matrix, i.e. the data is copied
|
//! returns deep copy of the matrix, i.e. the data is copied
|
||||||
UMat clone() const;
|
UMat clone() const CV_NODISCARD;
|
||||||
//! copies the matrix content to "m".
|
//! copies the matrix content to "m".
|
||||||
// It calls m.create(this->size(), this->type()).
|
// It calls m.create(this->size(), this->type()).
|
||||||
void copyTo( OutputArray m ) const;
|
void copyTo( OutputArray m ) const;
|
||||||
@ -2736,7 +2736,7 @@ public:
|
|||||||
SparseMat& operator = (const Mat& m);
|
SparseMat& operator = (const Mat& m);
|
||||||
|
|
||||||
//! creates full copy of the matrix
|
//! creates full copy of the matrix
|
||||||
SparseMat clone() const;
|
SparseMat clone() const CV_NODISCARD;
|
||||||
|
|
||||||
//! copies all the data to the destination matrix. All the previous content of m is erased
|
//! copies all the data to the destination matrix. All the previous content of m is erased
|
||||||
void copyTo( SparseMat& m ) const;
|
void copyTo( SparseMat& m ) const;
|
||||||
@ -2973,7 +2973,7 @@ public:
|
|||||||
SparseMat_& operator = (const Mat& m);
|
SparseMat_& operator = (const Mat& m);
|
||||||
|
|
||||||
//! makes full copy of the matrix. All the elements are duplicated
|
//! makes full copy of the matrix. All the elements are duplicated
|
||||||
SparseMat_ clone() const;
|
SparseMat_ clone() const CV_NODISCARD;
|
||||||
//! equivalent to cv::SparseMat::create(dims, _sizes, DataType<_Tp>::type)
|
//! equivalent to cv::SparseMat::create(dims, _sizes, DataType<_Tp>::type)
|
||||||
void create(int dims, const int* _sizes);
|
void create(int dims, const int* _sizes);
|
||||||
//! converts sparse matrix to the old-style CvSparseMat. All the elements are copied
|
//! converts sparse matrix to the old-style CvSparseMat. All the elements are copied
|
||||||
|
@ -61,7 +61,8 @@ PERF_TEST_P(Size_MatType, Mat_Clone,
|
|||||||
|
|
||||||
TEST_CYCLE()
|
TEST_CYCLE()
|
||||||
{
|
{
|
||||||
source.clone();
|
Mat tmp = source.clone();
|
||||||
|
(void)tmp;
|
||||||
}
|
}
|
||||||
destination = source.clone();
|
destination = source.clone();
|
||||||
|
|
||||||
@ -88,7 +89,8 @@ PERF_TEST_P(Size_MatType, Mat_Clone_Roi,
|
|||||||
|
|
||||||
TEST_CYCLE()
|
TEST_CYCLE()
|
||||||
{
|
{
|
||||||
roi.clone();
|
Mat tmp = roi.clone();
|
||||||
|
(void)tmp;
|
||||||
}
|
}
|
||||||
destination = roi.clone();
|
destination = roi.clone();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user