Replace deprecated std::iterator inheritance (#5111)

std::iterator is deprecated since C++17. E.g. when using the standard
library of gcc 12, deprecation warnings are shown.

There is some background info here:
https://www.fluentcpp.com/2018/05/08/std-iterator-deprecated/
This commit is contained in:
Sebastian Neubauer 2023-04-04 02:25:04 +02:00 коммит произвёл GitHub
Родитель d0c4285ddc
Коммит d529af3e2b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 15 добавлений и 6 удалений

Просмотреть файл

@ -315,15 +315,19 @@ DXIL::SigPointKind SigPointFromInputQual(DxilParamInputQual Q, DXIL::ShaderKind
void RemapObsoleteSemantic(DxilParameterAnnotation &paramInfo, DXIL::SigPointKind sigPoint, llvm::LLVMContext &Context);
class DxilStructTypeIterator
: public std::iterator<std::input_iterator_tag,
std::pair<llvm::Type *, DxilFieldAnnotation *>> {
class DxilStructTypeIterator {
private:
llvm::StructType *STy;
DxilStructAnnotation *SAnnotation;
unsigned index;
public:
using iterator_category = std::input_iterator_tag;
using value_type = std::pair<llvm::Type *, DxilFieldAnnotation *>;
using difference_type = std::ptrdiff_t;
using pointer = value_type *;
using reference = value_type &;
DxilStructTypeIterator(llvm::StructType *sTy,
DxilStructAnnotation *sAnnotation, unsigned idx = 0);
// prefix

Просмотреть файл

@ -465,8 +465,13 @@ struct DxilPartIsType {
};
/// Use this type as an iterator over the part headers.
struct DxilPartIterator : public std::iterator<std::input_iterator_tag,
const DxilContainerHeader *> {
struct DxilPartIterator {
using iterator_category = std::input_iterator_tag;
using value_type = const DxilContainerHeader *;
using difference_type = std::ptrdiff_t;
using pointer = value_type *;
using reference = value_type &;
const DxilContainerHeader *pHeader;
uint32_t index;

Просмотреть файл

@ -103,7 +103,7 @@ const DxilPartHeader *GetDxilPartByType(const DxilContainerHeader *pHeader, Dxil
return nullptr;
}
const DxilPartIterator partIter =
find_if(begin(pHeader), end(pHeader), DxilPartIsType(fourCC));
std::find_if(begin(pHeader), end(pHeader), DxilPartIsType(fourCC));
if (partIter == end(pHeader)) {
return nullptr;
}