Вот этот код компилится с 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> > {};
Как то это можно исправить?
Здравствуйте, 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;
}