https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81764

            Bug ID: 81764
           Summary: Visibility for explicitly instantiated template class
                    get warned if it was implicitly instantiated
           Product: gcc
           Version: 7.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: lanxingcan at gmail dot com
  Target Milestone: ---

```cpp

template<typename ...> class g;

template<typename ...T>
class __attribute((visibility("default"))) g
{
    g() = default;

    static int f(int x)
    {
        return g<>::yyy::u(x); // g<> instantiated here
    }


    struct yyy
    {
        static int u(int x){
            return x+ sizeof...(T);
        }
    };
};

extern template class __attribute((visibility("default"))) g<>; 
template class  g<>;
```

g++ says: extern-template.cc:23:60: warning: type attributes ignored after type
is already defined [-Wattributes]
 extern template class __attribute((visibility("default"))) g<>;

Is this behaviour intended?

Reply via email to