Boost.Parameterでは、引数パックからboost::optional
で任意の引数を取り出すことは直接的にサポートされていないようですが、デフォルト値としてboost::none
を指定すればできるようです。
#include <cassert> #include <string> #include <boost/optional.hpp> #include <boost/parameter/name.hpp> BOOST_PARAMETER_NAME(name) BOOST_PARAMETER_NAME(visible) template <class ArgumentPack> void make_window(const ArgumentPack& args) { // 必須パラメータ const std::string window_name = args[_name]; // 省略可能パラメータ const boost::optional<bool> is_visible = args[_visible | boost::none]; assert(window_name == "TitleWindow"); assert(!is_visible); } int main() { make_window((_name = "TitleWindow")); }