Extra Clang Tools 3.3 documentation

Add-Override Transform

«  Loop Convert Transform   ::   Contents   ::   Pass-By-Value Transform  »

Add-Override Transform

The Add-Override Transform adds the override specifier to member functions that override a virtual function in a base class and that don’t already have the specifier. The transform is enabled with the -add-override option of clang-modernize. For example:

class A {
public:
  virtual void h() const;
};

class B : public A {
public:
  void h() const;

  // The declaration of h is transformed to
  void h() const override;
};

Using Expands-to-Override Macros

Like LLVM’s LLVM_OVERRIDE, several projects have macros that conditionally expand to the override keyword when compiling with C++11 features enabled. To maintain compatibility with non-C++11 builds, the Add-Override Transform supports detection and use of these macros instead of using the override keyword directly. Specify -override-macros on the command line to the Modernizer to enable this behavior.

Known Limitations

  • This transform will not insert the override keyword if a method is pure. At the moment it’s not possible to track down the pure specifier location.
class B : public A {
public:
  virtual void h() const = 0;

  // The declaration of h is NOT transformed to
  virtual void h() const override = 0;
};

«  Loop Convert Transform   ::   Contents   ::   Pass-By-Value Transform  »