Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

isosig-impl.h decodeInts usage in fromIsoSig causes template syntax error #86

Open
fogti opened this issue Aug 22, 2024 · 1 comment
Open

Comments

@fogti
Copy link

fogti commented Aug 22, 2024

when compiling with

gcc (Gentoo 13.3.1_p20240614 p17) 13.3.1 20240614
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The following error is raised:

In file included from /import/y2data/home/fogti/devel/_read-only/regina/python/generic/triangulation-bindings.h:40,
                 from /import/y2data/home/fogti/devel/_read-only/regina/python/generic/triangulation8.cpp:33:
/import/y2data/home/fogti/devel/_read-only/regina/engine/triangulation/detail/isosig-impl.h: In static member function ‘static regina::Triangulation<dim> regina::detail::TriangulationBase<<anonymous> >::fromIsoSig(const std::string&)’:
/import/y2data/home/fogti/devel/_read-only/regina/engine/triangulation/detail/isosig-impl.h:343:33: warning: expected ‘template’ keyword before dependent template name [-Wmissing-template-keyword]
  343 |             auto joinDest = dec.decodeInts<size_t>(nJoins, nChars);
      |                                 ^~~~~~~~~~
      |                                 template
/import/y2data/home/fogti/devel/_read-only/regina/engine/triangulation/detail/isosig-impl.h:343:50: error: expected primary-expression before ‘>’ token
  343 |             auto joinDest = dec.decodeInts<size_t>(nJoins, nChars);
      |                                                  ^
/import/y2data/home/fogti/devel/_read-only/regina/engine/triangulation/detail/isosig-impl.h:344:35: warning: expected ‘template’ keyword before dependent template name [-Wmissing-template-keyword]
  344 |             auto joinGluing = dec.decodeInts<typename Perm<dim+1>::Index>(
      |                                   ^~~~~~~~~~
      |                                   template
/import/y2data/home/fogti/devel/_read-only/regina/engine/triangulation/detail/isosig-impl.h:344:73: error: expected ‘(’ before ‘>’ token
  344 |             auto joinGluing = dec.decodeInts<typename Perm<dim+1>::Index>(
      |                                                                         ^
      |                                                                         (

At first I thought this was caused by bbb1501, but it doesn't seem so, because reverting it just effectively moves the error to dec.decodeInt instead. Bisect points to dcffc6e being at fault.

@fogti
Copy link
Author

fogti commented Aug 22, 2024

Applying the suggestion indeed fixes the error (see also https://stackoverflow.com/questions/77144003/use-of-template-keyword-before-dependent-template-name, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70417 for context):

diff --git a/engine/triangulation/detail/isosig-impl.h b/engine/triangulation/detail/isosig-impl.h
index 4b99a9c2a..7f50b6ed6 100644
--- a/engine/triangulation/detail/isosig-impl.h
+++ b/engine/triangulation/detail/isosig-impl.h
@@ -340,8 +340,8 @@ Triangulation<dim> TriangulationBase<dim>::fromIsoSig(const std::string& sig) {
                 }
             }
 
-            auto joinDest = dec.decodeInts<size_t>(nJoins, nChars);
-            auto joinGluing = dec.decodeInts<typename Perm<dim+1>::Index>(
+            auto joinDest = dec.template decodeInts<size_t>(nJoins, nChars);
+            auto joinGluing = dec.template decodeInts<typename Perm<dim+1>::Index>(
                 nJoins, IsoSigPrintable<dim>::charsPerPerm);
 
             // End of component!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant