static assertion
От: be_cool  
Дата: 05.09.07 09:49
Оценка:
Всем привет.

Возможен ли такой статический assert, который внутри шаблонного класса будет проверять, наследуется ли класс, передаваемый параметром T от SomeBaseClass?

template <class T>
class MyClass
{
      BOOST_STATIC_ASSERT(some_expr_here) // какое выражение здесь?
};
[/code]


И следующий вопрос:


есть метод этого шаблонного класса

[ccode]
template <class T>
void MyClass<T>::someMethod(T* ptr)
{
         BOOST_STATIC_ASSERT(убедиться_в_том_что_ptr_указатель_на_объект_а_не_указатель_на_указатель_etc)
}



Вообще буду благодарен за линк на сэмплы по static assertions

И практикует ли вообще all данные проверки?
Re: static assertion
От: Bell Россия  
Дата: 05.09.07 09:57
Оценка: 1 (1)
Здравствуйте, be_cool, Вы писали:

_>Всем привет.


_>Возможен ли такой статический assert, который внутри шаблонного класса будет проверять, наследуется ли класс, передаваемый параметром T от SomeBaseClass?


здесь
Смотри is_base_of и is_pointer
Любите книгу — источник знаний (с) М.Горький
Re: static assertion
От: jazzer Россия Skype: enerjazzer
Дата: 05.09.07 09:58
Оценка:
Здравствуйте, be_cool, Вы писали:

_>Всем привет.


_>Возможен ли такой статический assert, который внутри шаблонного класса будет проверять, наследуется ли класс, передаваемый параметром T от SomeBaseClass?


_>
_>template <class T>
_>class MyClass
_>{
_>      BOOST_STATIC_ASSERT(some_expr_here) // какое выражение здесь?
_>};
_>


boost::is_base_of<SomeBaseClass, T>

_>И следующий вопрос:



_>есть метод этого шаблонного класса


_>
_>template <class T>
_>void MyClass<T>::someMethod(T* ptr)
_>{
_>         BOOST_STATIC_ASSERT(убедиться_в_том_что_ptr_указатель_на_объект_а_не_указатель_на_указатель_etc)
_>}
_>


boost::is_pointer<T>

все в boost/type_traits
http://www.boost.org/doc/html/boost_typetraits/reference.html
_>И практикует ли вообще all данные проверки?

Насчет all не уверен, но я точно использую
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...
Пока на собственное сообщение не было ответов, его можно удалить.