Obsolete Members for <QtCompilerDetection> | Qt Core | Qt 6.11.0
Description: The <QtCompilerDetection> header file includes various compiler-specific macros.

- Qt 6.11
- Qt Core
- Obsolete Members for <QtCompilerDetection>
- Qt 6.11.0 Reference Documentation

# Obsolete Members for <QtCompilerDetection>

The following members of class <QtCompilerDetection> are deprecated. They are provided to keep old source code working. We strongly advise against using them in new code.

## Macros

`(deprecated)` | Q_CC_INTEL
`(deprecated in 6.4)` | Q_DECL_CONSTEXPR
`(deprecated)` | Q_DECL_FINAL
`(deprecated in 6.4)` | Q_DECL_NOEXCEPT
`(deprecated in 6.4)` | Q_DECL_NOEXCEPT_EXPR(x)
`(deprecated in 6.4)` | Q_DECL_NOTHROW
`(deprecated)` | Q_DECL_OVERRIDE
`(deprecated in 6.4)` | Q_DECL_RELAXED_CONSTEXPR

## Macro Documentation

### `[deprecated]` Q_CC_INTEL

This macro is deprecated. We strongly advise against using it in new code.

This macro used to be defined if the application was compiled with the old Intel C++ compiler for Linux, macOS or Windows. The new oneAPI C++ compiler is just a build of Clang and therefore does not define this macro.

See also Q_CC_CLANG.

### `[deprecated in 6.4]` Q_DECL_CONSTEXPR

This macro is deprecated since 6.4. We strongly advise against using it in new code.

Use the `constexpr` keyword instead.

This macro can be used to declare variable that should be constructed at compile-time, or an inline function that can be computed at compile-time.

See also Q_DECL_RELAXED_CONSTEXPR and Q_DECL_CONSTEXPR_DTOR.

### `[deprecated]` Q_DECL_FINAL

This macro is deprecated. We strongly advise against using it in new code.

This macro can be used to declare an overriding virtual or a class as "final", with Java semantics. Further-derived classes can then no longer override this virtual function, or inherit from this class, respectively.

It expands to "final".

The macro goes at the end of the function, usually after the `const`, if any:

         // more-derived classes no longer permitted to override this:
         virtual void final_func() final;

For classes, it goes in front of the `:` in the class definition, if any:

         class SomeClass final { // cannot be derived from
             // ...
         };

See also Q_DECL_OVERRIDE.

### `[deprecated in 6.4]` Q_DECL_NOEXCEPT

This macro is deprecated since 6.4. We strongly advise against using it in new code.

Use the `noexcept` keyword instead.

This macro marks a function as never throwing. If the function does nevertheless throw, the behavior is defined: std::terminate() is called.

See also Q_DECL_NOTHROW and Q_DECL_NOEXCEPT_EXPR().

### `[deprecated in 6.4]` Q_DECL_NOEXCEPT_EXPR(x)

This macro is deprecated since 6.4. We strongly advise against using it in new code.

Use the `noexcept` keyword instead.

This macro marks a function as non-throwing if x is `true`. If the function does nevertheless throw, the behavior is defined: std::terminate() is called.

See also Q_DECL_NOTHROW and Q_DECL_NOEXCEPT.

### `[deprecated in 6.4]` Q_DECL_NOTHROW

This macro is deprecated since 6.4. We strongly advise against using it in new code.

Use the `noexcept` keyword instead.

This macro marks a function as never throwing, under no circumstances. If the function does nevertheless throw, the behavior is undefined.

See also Q_DECL_NOEXCEPT and Q_DECL_NOEXCEPT_EXPR().

### `[deprecated]` Q_DECL_OVERRIDE

This macro is deprecated. We strongly advise against using it in new code.

This macro can be used to declare an overriding virtual function. Use of this markup will allow the compiler to generate an error if the overriding virtual function does not in fact override anything.

It expands to "override".

The macro goes at the end of the function, usually after the `const`, if any:

         // generate error if this doesn't actually override anything:
         virtual void override_func() override;

See also Q_DECL_FINAL.

### `[deprecated in 6.4]` Q_DECL_RELAXED_CONSTEXPR

This macro is deprecated since 6.4. We strongly advise against using it in new code.

Use the `constexpr` keyword instead.

This macro can be used to declare an inline function that can be computed at compile-time according to the relaxed rules from C++14.

See also Q_DECL_CONSTEXPR and Q_DECL_CONSTEXPR_DTOR.