Accessing the target of std::function apparently requires RTTI, use a
raw pointer instead.
auto [it, inserted] = typeParsingHooks.try_emplace(mnemonic, Type::parse);
if (!inserted) {
const ExtensionTypeParsingHook &parsingHook = it->getValue();
- if (*parsingHook.target<mlir::Type (*)(AsmParser &)>() != &Type::parse)
+ if (parsingHook != &Type::parse)
reportDuplicateTypeRegistration(mnemonic);
else
return;
/// Parser callback for an individual type registered by this dialect or
/// its extensions.
- using ExtensionTypeParsingHook =
- std::function<::mlir::Type (::mlir::AsmParser &)>;
+ using ExtensionTypeParsingHook = ::mlir::Type (*)(::mlir::AsmParser &);
/// Printer callback for an individual type registered by this dialect or
/// its extensions.