[ Nedeljko @ 29.12.2004. 23:54 ] @
Imam sledeći kod:

Code:

#include <iostream>
#include <set>
 
using namespace std;

template <class T>
class a
{
public:
    
    struct b { T x; };
    
    static set<a::b> s;
};

template <class T> set<a<T>::b> a<T>::s;

int main()
{
    a<int>::b c;
    c.x = 8;
    cout << c.x << endl;
    
    return 0;
}



g++ mi prijavljuje upozorenje

Code:

imp.cpp: 15 warning: `a<T>::b' is implicitly a typename
imp.cpp: 15 warning: implicit typename is deprecated, please see
   documentation for details


Šta to znači?
[ zvrba @ 30.12.2004. 07:12 ] @
to znaci da kompajleru moras eksplicitno dati do znanja da je u pitanju tip, a ne npr. neki member. znaci pises

set<typename a<T>::b>

e sad zakaj je to tak napravljeno.. zato kaj ima nekih ambiguous slucajeva u gramatici C++-a i kompajler ne moze uvijek zakljuciti o cemu se radi. valjda :)
[ Nedeljko @ 06.01.2005. 00:05 ] @
A zašto mi GNU kompajleri za Linux izbacuju upozorenja svaki put kad na kraju source fajla nemam prazan red?