Bug в компиляторе MSVC 9.0?
От: SX Россия  
Дата: 15.06.08 05:36
Оценка:
Код:

typedef std::string SomeType;

template <typename T> void f(T, const SomeType& = SomeType())
{}

template <> void f<int>(int, const SomeType&)
{}

int main()
{
     f(10); // (1)
     f(10); // (2)
     f(10); // (3)
     return 0;
}


При компиляции выдаются ошибки в строках (2) и (3): cannot convert from "SomeType*" to "const SomeType&". Причем, если SomeType — встроенный тип, например, short или int, то компиляция проходит без ошибок.

В компиляторе MinGW 3.4.5 этот код компилируется без ошибок.

Обходные пути как сделать такую специализацию имеются.

Кто-нибудь с таким сталкивался?
Re: Bug в компиляторе MSVC 9.0?
От: serg baburin Россия  
Дата: 15.06.08 10:14
Оценка:
Здравствуйте, SX, Вы писали:

SX>Кто-нибудь с таким сталкивался?

а разве так можно: const SomeType& = SomeType()?
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>

Re[2]: Bug в компиляторе MSVC 9.0?
От: serg baburin Россия  
Дата: 15.06.08 10:19
Оценка:
Здравствуйте, serg baburin, Вы писали:

SB>а разве так можно: const SomeType& = SomeType()?

Не много подумал — можно — константная ссылка может быть инициализирована r-value.
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>

Re[3]: Bug в компиляторе MSVC 9.0?
От: Аноним  
Дата: 17.06.08 11:28
Оценка:
Здравствуйте, serg baburin, Вы писали:

SB>Здравствуйте, serg baburin, Вы писали:


SB>>а разве так можно: const SomeType& = SomeType()?

SB>Не много подумал — можно — константная ссылка может быть инициализирована r-value.
А зачем, если не секрет?
это что-то типа такого: const SomeType & SomeObject = SomeType()?
Re[4]: Bug в компиляторе MSVC 9.0?
От: SX Россия  
Дата: 17.06.08 14:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А зачем, если не секрет?

А>это что-то типа такого: const SomeType & SomeObject = SomeType()?

Да. В оригинале было такое:

template <typename CharType, typename StrType> 
std::basic_string<CharType> convert(const StrType& str, std::locale& loc = std::locale());

// ... и соответствующие специализации для некоторых StrType
Re[5]: Bug в компиляторе MSVC 9.0?
От: SX Россия  
Дата: 17.06.08 15:36
Оценка:
Ошибочка...

SX>
SX>template <typename CharType, typename StrType> 
SX>std::basic_string<CharType> convert(const StrType& str, const std::locale& loc = std::locale());

SX>// ... и соответствующие специализации для некоторых StrType
SX>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.