http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59211

            Bug ID: 59211
           Summary: init_priority doesn't work with constant expressions
           Product: gcc
           Version: 4.8.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nyh at math dot technion.ac.il

It seems that __attribute__((init_priority(...))) demands an integer constant,
and doesn't work with constant *expressions*. For example, the following
doesn't compile:

constexpr int prio = 123;
__attribute__((init_priority(prio))) t a;

Even more sadly for me, the following attempt to avoid manually defining
priority numbers doesn't compile:

enum class init_prio : int {
    first = 101,
    second,
    third,
};
__attribute__((init_priority(init_prio::second))) t a;

There is no real reason why this shouldn't be allowed. Interestingly, with
__attribute((constructor(...)), exactly the same constructs do work!

Reply via email to