You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Common/MathUtils/include/MathUtils/SMatrixGPU.h
+13Lines changed: 13 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -29,6 +29,7 @@
29
29
#include"GPUCommonMath.h"
30
30
#include"GPUCommonAlgorithm.h"
31
31
#include"GPUCommonLogger.h"
32
+
#include"GPUCommonTypeTraits.h"
32
33
33
34
namespaceo2::math_utils::detail
34
35
{
@@ -468,6 +469,9 @@ class SMatrixGPU
468
469
GPUd() const T& operator()(unsignedint i, unsignedint j) const;
469
470
GPUd() T& operator()(unsignedint i, unsignedint j);
470
471
472
+
template <typename Y, typename X>
473
+
GPUd() friend X& operator<<(Y& y, const SMatrixGPU&);
474
+
471
475
classSMatrixRowGPU
472
476
{
473
477
public:
@@ -512,6 +516,15 @@ class SMatrixGPU
512
516
R mRep;
513
517
};
514
518
519
+
#ifndef __OPENCL__ // TODO: current C++ for OpenCL 2021 is at C++17, so no concepts. But we don't need this trick for OpenCL anyway, so we can just hide it.
520
+
template <classT, unsignedint D1, unsignedint D2, classR, typename Y, typename X = Y>
521
+
requires(sizeof(typename X::traits_type::pos_type) != 0) // do not provide a template to fair::Logger, etc... (pos_type is a member type of all std::ostream classes)
522
+
GPUd() X& operator<<(Y& y, const SMatrixGPU<T, D1, D2, R>&)
0 commit comments