Browse Source

Suppress pointless Clang 23 unused template warnings.

Similar to what I did in Corrade.
next
Vladimír Vondruš 4 weeks ago
parent
commit
b8bddc438c
  1. 9
      doc/snippets/SceneGraph.cpp
  2. 12
      src/Magnum/Math/FunctionsBatch.h

9
doc/snippets/SceneGraph.cpp

@ -146,6 +146,12 @@ class CachingObject: public Object3D, SceneGraph::AbstractFeature3D {
namespace {
/* Clang 23 adds -Wunused-template to -Wall and then warns about the unused
constructor. Well, this is a doc snippet, so what am I supposed to do? */
#ifdef CORRADE_TARGET_CLANG
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-template"
#endif
/* [transformation] */
class TransformingFeature: public SceneGraph::AbstractFeature3D {
public:
@ -161,6 +167,9 @@ class TransformingFeature: public SceneGraph::AbstractFeature3D {
SceneGraph::AbstractTranslationRotation3D& _transformation;
};
/* [transformation] */
#ifdef CORRADE_TARGET_CLANG
#pragma clang diagnostic pop
#endif
}

12
src/Magnum/Math/FunctionsBatch.h

@ -49,9 +49,21 @@ namespace Implementation {
/** @todo Utility/Algorithms.h has a similar (but different) variant of this,
maybe turn that into some public utility once we have one more use case? */
/* Clang since version 23 includes -Wunused-template in -Wall, and warns for
those declarations. The templates are used inside a decltype() expression
below (and commenting them out obviously makes the test fail to compile) so
this is yet another completely pointless warning that just wastes my
time. */
#ifdef CORRADE_TARGET_CLANG
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-template"
#endif
template<class T, class View = decltype(Containers::Implementation::ErasedArrayViewConverter<typename std::remove_reference<T&&>::type>::from(std::declval<T&&>()))> static auto stridedArrayViewTypeFor(T&&) -> typename std::remove_const<typename View::Type>::type;
template<class T> static typename std::remove_const<T>::type stridedArrayViewTypeFor(const Containers::ArrayView<T>&);
template<class T> static typename std::remove_const<T>::type stridedArrayViewTypeFor(const Containers::StridedArrayView1D<T>&);
#ifdef CORRADE_TARGET_CLANG
#pragma clang diagnostic pop
#endif
}

Loading…
Cancel
Save