static_assert
Путь был в библиотеке Lokiimplemented (где он был на самом деле препроцессор макро называется STATIC_CHECK
), она может быть использована следующим образом:Где используется static_assert?
STATIC_CHECK(myCondition, My_Error_Message);
Обратите внимание, что My_Error_Message
должен быть допустимым идентификатором.
Мне интересно, как static_assert
реализован для стандарта C++11
, чтобы принять строковый литерал для сообщения об ошибке.
Я решил посмотреть в файле type_traits
, который находится в /usr/include/c++/4.8
на моем Ubuntu 14.04 с g ++ 4.8.2. К моему удивлению, я нашел здесь только, но не определение (и макропроцессор препроцессора). Я не нашел его в файлах, включенных в type_traits
.
Итак, где искать реализацию static_assert
?
Ницца. Это объясняет две вещи. Во-первых, это объясняет, почему это 'static_assert', а не' std :: static_assert'. Во-вторых, это расстраивает подозрение, что Александреску не обратил внимания на лучшее решение. – AlwaysLearning