[
https://issues.apache.org/jira/browse/TS-125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12833480#action_12833480
]
John Plevyak commented on TS-125:
---------------------------------
It is, in general, not possible to ensure that the link field is first,
if for no other reason than that some classes have more than
one link field.
A correct C++ compiler should not have any problem with
the code, but some compilers are buggy and (for example)
do not treat offsetof() expressions as constants are required
by the C++ standard.
The dev branch is known to compile on opensolaris with
g++ version 4.3.2, and I would suggest you try that version.
> Cannot use user-defined types in typedef of template function
> -------------------------------------------------------------
>
> Key: TS-125
> URL: https://issues.apache.org/jira/browse/TS-125
> Project: Traffic Server
> Issue Type: Bug
> Components: Portability
> Environment: OpenSolaris with SunStudio (gcc on opensolaris fails the
> same code with a different error; same workaround fixes it)
> Reporter: Nick Kew
> Priority: Critical
>
> This appears to be related to Sun bug
> http://bugs.sun.com/view_bug.do?bug_id=6906118
> but is sufficiently different that the workaround suggested there doesn't
> apply.
> Compiling DAllocator.h produces the following fatal error:
> "DAllocator.h", line 86: Error: Unexpected type name "AllocPoolDescriptor"
> encountered.
> "DAllocator.h", line 87: Error: Unexpected type name "AllocDescriptor"
> encountered.
> It can be worked around by reverting:
> @@ -83,8 +83,8 @@
> int alignment;
> int el_size;
>
> - SList(AllocPoolDescriptor,link) pools;
> - Que(AllocDescriptor,link) free_list;
> + SLL<AllocPoolDescriptor> pools;
> + Queue<AllocDescriptor> free_list;
> Expanding that with the -E option to CC reveals that this loses an offsetof
> argument, so if we could fix the offset to zero then the problem goes away.
> If at all possible, it would be good to make "link" the first element of
> AllocDescriptor and AllocPoolDescriptor so the need for offsetof goes away.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.