boost_assert, что класс параметров реализует определенный метод - PullRequest
0 голосов
/ 25 октября 2010

Предположим, у вас есть определенный шаблон, который принимает класс параметров

template <typename ConnectorClass>
struct myClass {

}

Я хочу добавить BOOST_ASSERT_MSG, чтобы проверить, что ConnectorClass реализует определенный метод подписи

returnType MethodName(param1, param2)

Как мне написать условие подтверждения в этом случае?

РЕДАКТИРОВАТЬ: поскольку вопрос, похоже, не имеет четкого решения, я публикую подвопрос с промежуточными результатами, основанный на некоторых ссылках наответы, пожалуйста, следуйте здесь

Ответы [ 3 ]

2 голосов
/ 25 октября 2010

Вы не можете.BOOST_ASSERT_MSG оценивается во время выполнения.Если у класса нет этого члена, вы получите сообщение об ошибке компиляции везде, где его ожидает шаблон.

Если ваша цель - улучшить сообщения об ошибках, загляните в библиотеку Boost's Concept Check.Если ваша цель состоит в том, чтобы ваш шаблон делал что-то другое в зависимости от того, какие члены доступны, посмотрите в enable_if.

Boost. Вот ответ на аналогичный вопрос .

0 голосов
/ 25 октября 2010

Посмотрите на различные утилиты статического утверждения в Boost.В частности:

0 голосов
/ 25 октября 2010

Если вы работаете в Windows и не слишком требовательны, вы можете сделать это через __ if_exists, расширение для взлома Visual C ++

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...