class_docstr: Base class for a meta-dataset, where the classification tasks are over 
  multiple classes from a `ClassDataset`.
  
  Parameters
  ----------
  dataset : `ClassDataset` instance
      A dataset of classes. Each item of `dataset` is a dataset, containing 
      all the examples from the same class.
  
  num_classes_per_task : int
      Number of classes per tasks. This corresponds to `N` in `N-way` 
      classification.
  
  target_transform : callable, optional
      A function/transform that takes a target, and returns a transformed 
      version. See also `torchvision.transforms`.
  
  dataset_transform : callable, optional
      A function/transform that takes a dataset (ie. a task), and returns a 
      transformed version of it. E.g. `transforms.ClassSplitter()`.
code: def __iter__(self):
      num_classes = len(self.dataset)
      for index in combinations(num_classes, self.num_classes_per_task):
          yield self[index]
  
imports: import sys
  import numpy
  import warnings
  from copy import deepcopy
  from itertools import combinations
  from ordered_set import OrderedSet
  from torchvision.transforms import Compose
  from torchmeta.utils.data.task import ConcatTask
  from torchmeta.transforms import FixedCategory, Categorical, DefaultTargetTransform
  from torchmeta.transforms.utils import wrap_transform
label_desc: Use image node_id 2 for calling the CombinationMetaDataset obj's underlying member method code with example usage: obj.__iter__() without return types