Bonjour à tous,

Avec G++-7 J'ai cette erreur:
error: expected primary-expression before ‘>’ token
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
     T_Mesh mesh = loader.LoadfromFile<Vertex>(inFilePath);
                                             ^
Voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
template <typename T_Mesh, typename T_Loader>
void LoadComputeExport(vs::Shader &inShader, const std::string &inFilePath, const po::variables_map &inVm)
{
    T_Loader loader;
 
    using Vertex = typename T_Mesh::Vertex;
 
    T_Mesh mesh = loader.LoadfromFile<Vertex>(inFilePath);
 
    Export<T_Mesh>(vs::Compute(mesh, inShader), inVm);
}

Voici un appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
LoadComputeExport<vs::obj::yocto::Mesh, vs::obj::Loader>(shader, file_path, vm);
Ce que ça veux dire:
Je souhaite charger un fichier «obj» dans une Mesh de la librairie yocto. Je veux lui appliquer un shader et l'exporter (le choix du format d'export étant figé).

Voici une déclartion de LoadFromFile
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
        class M_LIB_DLL_EXPORT Loader : public vs::Loader
        {
            public:
                Loader();
                ~Loader();
 
                template<typename T_Vertex>
                vs::Mesh<T_Vertex> LoadfromFile(const std::string &inFilePath);
        };
 
        template<>
        vs::obj::yocto::Mesh vs::obj::Loader::LoadfromFile(const std::string &inFilePath);
Je fait appel à une spécialisation d'une fonction de classe. Remarque: Cette spécialisation sera bien exporter dans la DLL.

Si je n'essaie pas de factoriser mon chargement/calcul/export, l'appel à LoadFromFile fonctionne très bien.
En voici un appel sans factorisation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
typedef vs::Mesh<vs::obj::yocto::Vertex> Mesh;
Mesh mesh = obj_loader.LoadfromFile<Mesh::Vertex>(vm[Options::input_obj].as<std::string>())
Auriez vous une idée de comment corriger cela. Le message de g++ ne dit pas ce qu'il considère avoir entre les chevrons. Donc je sais pas ce que mon Vertex a de mal.