запросить тип элемента контейнера

Тема в разделе "LANGS.C", создана пользователем cupuyc, 6 янв 2011.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Здравствуйте. Я хочу написать что-то типа этого..

    Код (Text):
    1. template <typename t>
    2. void func(t const& x)
    3. {
    4.   bool b = is_sequence<t::value_type>::value;
    5. }
    6.  
    7. int main()
    8. {
    9.   std::vector<std::vector<int> > v1;
    10.   std::vector<int> v2;
    11.  
    12.   func(v1);
    13.   func(v2);
    14. }
    Причём, я точно знаю, что переменная х, передаваемая функции, является контейнером, стало быть t::value_type я имею право запросить. На VS всё замечательно компилится и работает. На гсс проблемы. Как собрать такой код под гсс?
     
  2. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    magic!

    Код (Text):
    1. template <typename t>
    2. void func(t const& x)
    3. {
    4.   bool b1 = is_sequence<typename t::value_type>::value;
    5.   std::cout << b1 << std::endl;
    6. }
    Почему нужно писать `typename t::value_type`?
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Иначе компиллер принимает value_type за мембер.