| // { dg-do assemble } |
| // 980924 bkoz |
| // just a quick test for export, to make sure we are warning for it. |
| // CHANGE ME when it's supported |
| |
| |
| // 14 Templates |
| //p 6 |
| // A namespace-scope declaration or definintion of a non-line function |
| // template, a non-inline member function template, a non-inline |
| // member function of a class template or a static data member of a |
| // class template may be preceeded by the export keyword. If such a |
| // template is defined in the same translation unit in which it is |
| // declared as exported, the definition is considered to be |
| // exported. The first declaration of the template containing the |
| // export keyword must not follow the definition. (meaning that export |
| // can't beredeclared as non-export??) |
| |
| // 1 |
| // template definition |
| export template <class T> // { dg-warning "" } |
| bool templ_one(T a) { |
| if (a > 0) |
| return true; |
| else |
| return false; |
| } |
| |
| |
| // 2 |
| // static data, mf, mf template |
| template <class T> |
| class X_one { |
| unsigned short id; |
| T type; |
| public: |
| static const bool is_specialized ; |
| |
| X_one(const unsigned short& us = 5): id(us), type(T(0)) {} |
| unsigned short ret_id (); |
| template <class T2> bool compare_ge(T2 test); |
| }; |
| |
| export template <class T> // { dg-warning "" } |
| const bool X_one<T>::is_specialized = false; |
| |
| export template <class T> // { dg-warning "" } |
| unsigned short X_one<T>::ret_id() { |
| return id; |
| } |
| |
| export template <class T2> // { dg-warning "" } |
| bool compare_ge(T2 test) { |
| if (test > type) // { dg-error "" } .* |
| return true; |
| return false; |
| } |
| |