https://llvm.org/bugs/show_bug.cgi?id=24211
Bug ID: 24211 Summary: candidate template ignored: substitution failure(error with clang but not with g++) Product: new-bugs Version: unspecified Hardware: PC OS: Windows NT Status: NEW Severity: normal Priority: P Component: new bugs Assignee: unassignedb...@nondot.org Reporter: 1532708...@qq.com CC: llvmbugs@cs.uiuc.edu Classification: Unclassified // g++ compiles the next code, but clang++ not template<int dim, int loop> class Reference{ public: //... template<int r, int c> using matrix_t = int[r][c]; Reference(const matrix_t<dim, loop> &mat){} }; template<int dim, int loop> class Partition{ // ... public: // ... template<int r, int c> using matrix = int[r][c]; template<int r, int c> void readPattern(const matrix<r,c> &pattern) { // ... } // ... }; int main() { // ... const int DENOISE_UR[3][4] = {/*...*/}; Partition<1,2> partition; partition.readPattern(DENOISE_UR); // ... } ///////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// // only move one of the alias template ahead of the two class definition // g++ compiles the next code, so as clang++ template<int r, int c> using matrix = int[r][c]; template<int dim, int loop> class Reference{ public: //... template<int r, int c> using matrix_t = int[r][c]; Reference(const matrix_t<dim, loop> &mat){} }; template<int dim, int loop> class Partition{ // ... public: // ... template<int r, int c> void readPattern(const matrix<r,c> &pattern) { // ... } // ... }; int main() { // ... const int DENOISE_UR[3][4] = {/*...*/}; Partition<1,2> partition; partition.readPattern(DENOISE_UR); // ... } -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ LLVMbugs mailing list LLVMbugs@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs