부스트의 signals2 라이브러리는 확장 된 기능 중 일부 (매개 변수 라이브러리를 통해)에 대체 매개 변수를 전달하는 좋은 방법을 정의합니다. 이러한 대체 매개 변수 중 하나가 내 코드에서 매우 평범한 경우 사용을 더 단순화하는 도우미를 만들고 싶습니다. 예를 대체 뮤텍스 유형을 지정하는 나는이 작업을 수행 할 수 있습니다부스트 시그널에 대한 대체 디폴트 지정하기 2
namespace bs2 = boost::signals2;
template<typename Signature>
struct my_signal
{
typedef typename bs2::signal_type<Signature,
bs2::keywords::mutex_type<my_mutex> >::type type;
};
my_signal<void()>::type some_signal;
불행하게도 나는 또한 (예 : 컴 유형과 같은) 다른 신호 파라미터에 대한 대체 값을 지정할 수있는 기능을 "손실"한 이렇게함으로써없이 자세한 구문으로 돌아가거나 my_signal_with_combiner 또는 무언가 (어리석은 것처럼 보임)와 같은 여분의 메타 함수를 정의하십시오. 나는 기본 템플릿 매개 변수 값을 가지고 그렇게 할 수 없다고 생각한다. 왜냐하면 Combiner의 기본값은 반환 형식을 얻기 위해 Signature를 분리해야하기 때문이다. (그리고 이상적으로는 물론 결합 자뿐만 아니라 다른 매개 변수에 대해서도 효과가있는 무언가를 원합니다.) "진짜"질문은 signal_type과 같은 것을 정의하는 (간단한) 방법입니다 : 매개 변수와 동일하게 동작하지만 매개 변수 중 하나에 다른 기본값이 있습니까? (이상적으로는 Boost.Signals2 미래에 더 많은 매개 변수를 추가하는 경우 변경 필요가 없습니다.)
(또한, 아니 C++ 11. 아직 사용하십시오 이전 컴파일러.)