C++: Support new builtin operations

This commit is contained in:
Jeroen Ketema
2026-01-09 13:31:23 +01:00
parent 5d00a4df86
commit 3d959abdeb
2 changed files with 64 additions and 0 deletions

View File

@@ -1941,3 +1941,61 @@ class BuiltInOperationIsTriviallyRelocatable extends BuiltInOperation, @istrivia
override string getAPrimaryQlClass() { result = "BuiltInOperationIsTriviallyRelocatable" }
}
/**
* A C++ `__is_bitwise_cloneable` built-in operation.
*
* Returns `true` if an object of type `_Tp` is bitwise cloneable.
*
* ```
* template<typename _Tp>
* struct is_bitwise_cloneable
* : public integral_constant<bool, __is_bitwise_cloneable(_Tp)>
* {};
* ```
*/
class BuiltInOperationIsBitwiseCloneable extends BuiltInOperation, @isbitwisecloneable {
override string toString() { result = "__is_bitwise_cloneable" }
override string getAPrimaryQlClass() { result = "BuiltInOperationIsBitwiseCloneable" }
}
/**
* A C++ `__is_invocable` built-in operation (used by some implementations
* of the `<type_traits>` header).
*
* Returns `true` if a function of type `_FTpn` can be invoked with arguments of
* type `_Tps`.
*
* ```
* template<typename _FTpn, typename... _Tps>
* struct is_invocable
* : public integral_constant<bool, __is_invocable(_FTpn, _Tps...)>
* {};
* ```
*/
class BuiltInOperationIsInvocable extends BuiltInOperation, @isinvocable {
override string toString() { result = "__is_invocable" }
override string getAPrimaryQlClass() { result = "BuiltInOperationIsInvocable" }
}
/**
* A C++ `__is_nothrow_invocable` built-in operation (used by some implementations
* of the `<type_traits>` header).
*
* Returns `true` if a function of non-throwing type `_FTpn` can be invoked
* with arguments of type `_Tps`.
*
* ```
* template<typename _FTpn, typename... _Tps>
* struct is_nothrow_invocable
* : public integral_constant<bool, __is_nothrow_invocable(_FTpn, _Tps...)>
* {};
* ```
*/
class BuiltInOperationIsNothrowInvocable extends BuiltInOperation, @isnothrowinvocable {
override string toString() { result = "__is_nothrow_invocable" }
override string getAPrimaryQlClass() { result = "BuiltInOperationIsNothrowInvocable" }
}

View File

@@ -1902,6 +1902,9 @@ case @expr.kind of
| 391 = @nested_requirement
| 392 = @compound_requirement
| 393 = @concept_id
| 394 = @isinvocable
| 395 = @isnothrowinvocable
| 396 = @isbitwisecloneable
;
@var_args_expr = @vastartexpr
@@ -2018,6 +2021,9 @@ case @expr.kind of
| @istriviallyequalitycomparable
| @isscopedenum
| @istriviallyrelocatable
| @isinvocable
| @isnothrowinvocable
| @isbitwisecloneable
;
compound_requirement_is_noexcept(