Компилятор Intel не компилирует объявление частного прямого класса в другом классе - PullRequest
1 голос
/ 18 сентября 2009

У меня проблемы с компилятором Intel 11.1.xxx Эти проблемы не появляются во время компиляции с компилятором MS CL. И я не понимаю, что не так с кодом (внешний заголовок библиотеки boost) Я получаю несколько ошибок:

.. \ подталкивание / журнал / атрибутов / attribute_set.hpp (148): ошибка: объявление несовместимо с постоянным "bool fConstV" (объявлен в строке 147) шаблон друг класс iter; ^ обнаружен во время: создание экземпляра класса "boost :: log_mt :: basic_attribute_set [с CharT = char] "в строке 252 ".. \ подталкивание / журнал / источники / basic_logger.hpp" создание экземпляра класса "boost :: log_mt :: sources :: basic_logger [with ДИАГРАММА = голец, FinalT = повышение :: log_mt :: источники :: регистратор, ThreadingModelT = повышение :: log_mt :: источники :: single_thread_model]» в строке 738 из ".. \ подталкивание / журнал / источники / basic_logger.hpp" создание экземпляра класса "boost :: log_mt :: sources :: basic_composite_logger [с CharT = char, FinalT = повышение :: log_mt :: источники :: регистратор, FeaturesT = повышение :: MPL :: ве ctor0] "в строке 787 ".. \ подталкивание / журнал / источники / basic_logger.hpp"

.. \ подталкивание / журнал / атрибутов / named_scope.hpp (146): ошибка: объявление несовместимо с постоянным "bool fConstV" (объявлен в строке 145) шаблон друг класс iter; ^ обнаружен во время: создание экземпляра класса "boost :: log_mt :: attribute :: basic_named_scope_list [with CharT = char] "в строке 364 создание экземпляра класса "boost :: log_mt :: attribute :: basic_named_scope [с CharT = char] "в строке 94 ".. \ подталкивание / журнал / форматтеры / named_scope.hpp" создание экземпляра класса "boost :: log_mt :: formatters :: fmt_named_scope [с CharT = char] "в строке 270 ".. \ подталкивание / журнал / форматтеры / named_scope.hpp"

attributeset.hpp

    template< typename CharT >
    class basic_attribute_set
    {
        /* ... */
        template< bool fConstV > class iter;
        template< bool fConstV > friend class iter;
        template< bool fConstV >

       class iter
       {
            friend class iter< !fConstV >;
            friend class basic_attribute_set< CharT >;
            /* ... */
            /* ... */
       }
    }

basiclogger.hpp

   class logger : public basic_composite_logger< char, logger, single_thread_model, mpl::vector0< > >
   {
       BOOST_LOG_FORWARD_LOGGER_CONSTRUCTORS(logger)
   };

Любые советы приветствуются.

1 Ответ

0 голосов
/ 18 сентября 2009

может быть, в строке 148 вы хотите template <bool fConstV> friend class iter<fConstV>;? Хотя, поскольку iter объявлен как вложенный класс, я не думаю, что вам нужно объявление друга;

...