Skip to content

A12-0-1: Class templates raise false positives #8

Closed
@nicolaswill

Description

@nicolaswill

Affected rules

  • A12-0-1

Description

Class templates raise false positives even if all special member functions are defined. Identical classes (which are not class templates) do not result in a false-positive result.

Example

template<typename T>
class A12_0_1a { // <= A12-0-1 error here
 public:
  explicit A12_0_1a(T i) : i_(i) {}
  A12_0_1a(const A12_0_1a&) = delete;
  A12_0_1a(A12_0_1a&&) = delete;
  A12_0_1a& operator=(const A12_0_1a&) = delete;
  A12_0_1a& operator=(A12_0_1a&&) = delete;
  virtual ~A12_0_1a() = default;
 private:
  T i_;
};
class A12_0_1b { // <= No A12-0-1 error here
 public:
  explicit A12_0_1b(int i) : i_(i) {}
  A12_0_1b(const A12_0_1b&) = delete;
  A12_0_1b(A12_0_1b&&) = delete;
  A12_0_1b& operator=(const A12_0_1b&) = delete;
  A12_0_1b& operator=(A12_0_1b&&) = delete;
  virtual ~A12_0_1b() = default;
 private:
  int i_;
};

Metadata

Metadata

Assignees

Labels

Difficulty-LowA false positive or false negative report which is expected to take <1 day effort to addressImpact-Mediumfalse positive/false negativeAn issue related to observed false positives or false negatives.irrceproducableThe described issue cannot be reproduced.user-reportIssue reported by an end user of CodeQL Coding Standards

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions