Куча варнингов в темплейтах с контейнерами
От: na1s  
Дата: 29.08.09 16:25
Оценка:
Вот этот код компилится с 156 варнингами:
template < typename TRes, typename T1, typename T2 = void, typename T3 = void, typename T4 = void, typename T5 = void >
class tuples_map : public tuples_map_base<TRes, map<T1, map<T2, map<T3, map<T4,map<T5,TRes> > > > > >  {};

template<typename TRes, typename T1, typename T2, typename T3, typename T4>
class tuples_map<TRes, T1, T2, T3, T4, void> : public tuples_map_base<TRes, map<T1, map<T2, map<T3, map<T4,TRes> > > > > {};

template<typename TRes, typename T1, typename T2, typename T3>
class tuples_map<TRes, T1, T2, T3, void, void> : public tuples_map_base<TRes, map<T1, map<T2,map< T3,TRes> > > > {};

template<typename TRes, typename T1, typename T2>
class tuples_map<TRes, T1, T2, void, void, void> : public tuples_map_base<TRes, map<T1, map<T2,TRes> > > {};

template<typename TRes, typename T1>
class tuples_map<TRes, T1, void, void, void, void> : public tuples_map_base<TRes, map<T1,TRes> > {};

Как то это можно исправить?
Re: Куча варнингов в темплейтах с контейнерами
От: Chorkov Россия  
Дата: 31.08.09 09:19
Оценка:
Здравствуйте, na1s, Вы писали:

N>Вот этот код компилится с 156 варнингами:

N>
...
N>

N>Как то это можно исправить?

Предупреждения воспроизводятся.
Ни MSVS2005 (/W4), ни G++, ни Comeau предупреждений не выдали.

Укажи компилятор, определение tuples_map_base, способ использования шаблона и выдаваемые предупреждения.

Для теста использовал пример:
#include <map>
#include <string>

using namespace std;

template <class Key, class Data>
class tuples_map_base
{
    map<Key, Data> data;
};

template < typename TRes, typename T1, typename T2 = void, typename T3 = void, typename T4 = void, typename T5 = void >
class tuples_map : public tuples_map_base<TRes, map<T1, map<T2, map<T3, map<T4,map<T5,TRes> > > > > >  {};

template<typename TRes, typename T1, typename T2, typename T3, typename T4>
class tuples_map<TRes, T1, T2, T3, T4, void> : public tuples_map_base<TRes, map<T1, map<T2, map<T3, map<T4,TRes> > > > > {};

template<typename TRes, typename T1, typename T2, typename T3>
class tuples_map<TRes, T1, T2, T3, void, void> : public tuples_map_base<TRes, map<T1, map<T2,map< T3,TRes> > > > {};

template<typename TRes, typename T1, typename T2>
class tuples_map<TRes, T1, T2, void, void, void> : public tuples_map_base<TRes, map<T1, map<T2,TRes> > > {};

template<typename TRes, typename T1>
class tuples_map<TRes, T1, void, void, void, void> : public tuples_map_base<TRes, map<T1,TRes> > {};


tuples_map<string, string> A;

int main()
{
    return 0;
}
Re: Куча варнингов в темплейтах с контейнерами
От: jazzer Россия Skype: enerjazzer
Дата: 31.08.09 22:50
Оценка:
Здравствуйте, na1s, Вы писали:

N>Вот этот код компилится с 156 варнингами:


N>Как то это можно исправить?


«Дорогие ученые! У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит»

Это намек, что неплохо бы сами варнинги тоже посмотреть
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.