What are the differences between the definitions of mesh traits?

I am seeing two types of mesh trait definition in ITK example codes. Could you please explain what are the differences?

  • What is the mesh trait? what is it exactly showing for a mesh? Based on my understanding, it is the structure of mesh. Is that right?

What is the difference between these two definitions of mesh types?

  1. In this link, the declaration of triangle mesh is:

    typedef itk::DefaultDynamicMeshTraits<double, 3, 3,double,double> TriangleMeshTraits;
    typedef itk::Mesh<double,3, TriangleMeshTraits> TriangleMeshType;

  2. In this link , the mesh traits definitions is different:

typedef float PixelType;
typedef itk::DefaultDynamicMeshTraits<PixelType, dimension> TriangleMeshTraits;
typedef itk::Mesh<PixelType, dimension, TriangleMeshTraits> TriangleMeshType;

Read docs for DefaultDynamicMeshTraits to see explanation of its template parameters. All of them have a default value except the first one.