class ShapeInference;
namespace detail {
struct ShapeInferenceInterfaceTraits { … };
template <typename ConcreteOp>
struct ShapeInferenceTrait;
}
class ShapeInference : public ::mlir::OpInterface<ShapeInference, detail::ShapeInferenceInterfaceTraits> { … };
namespace detail {
template <typename ConcreteOp>
struct ShapeInferenceTrait : public ::mlir::OpInterface<ShapeInference, detail::ShapeInferenceInterfaceTraits>::Trait<ConcreteOp> { … };
}
template<typename ConcreteOp>
void detail::ShapeInferenceInterfaceTraits::Model<ConcreteOp>::inferShapes(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { … }
template<typename ConcreteOp>
void detail::ShapeInferenceInterfaceTraits::FallbackModel<ConcreteOp>::inferShapes(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { … }