안녕하세요, 저는 신호 알림 처리를위한 자체 커스텀 코드에서 전환하고 싶기 때문에 부스트 신호를 최근에 들여다 보았습니다. 여기에서 첫 번째 예제를 컴파일 문제로 실행 :clang ++는 부스트 시그널 2의 첫번째 예제를 만들지 않을 것입니다.
struct HelloWorld
{
void operator()() const
{
std::cout << "Hello, World!" << std::endl;
}
};
// Signal with no arguments and a void return value
boost::signals2::signal<void()> sig;
// Connect a HelloWorld slot
HelloWorld hello;
sig.connect(hello);
// Call all of the slots
sig();
문제는이 컴파일을 시도에서 발생 : 그 소리 ++ -std = C++ 11 signals2example.cpp을 http://www.boost.org/doc/libs/1_53_0/doc/html/signals2/tutorial.html, 여기 예제 소스 코드 여기에이 오류입니다 : "SIG();"
error: no matching function for call to 'get'
func(std::get<indices>(args)...);
내가 하나를 일으킨 알아 냈 때까지 모든 라인에서 주석 문제를 좁히려는, 단순히 선을 말한다하였습니다 문제는 튜플이나 뭔가를위한 std :: get 함수와 관련이있는 것처럼 보입니다. boost :: signal2와 clang ++ clashing과 관련하여 온라인에서 유용한 게시물이 많지 않습니다. 또한 g ++은 불만없이이 문서를 컴파일합니다.
내가 추측 할 수있는 실제 코드를 보지 않고도 내 생각 엔이 예제에서'indices' 이름은 변수이며 컴파일 타임 상수가 아닙니다. 그리고 템플릿은 컴파일시에만 구성되므로 모든 비 유형 템플릿 인자는 컴파일 타임 상수 여야합니다. 부스트 (Boost)가 그런 실수를하는 것은 이상한 것 같습니다. –
@JoachimPileborg이 라이브러리의 퍼포먼스는 그다지 훌륭하지 않습니다. 나는 품질 측면에서 그렇게 낮은 수준에 놀라지 않는다. 나는 도서관을 한 번 사용해 보았다. 어떻게 이것을 왜 사람들이 사용하는지 볼 수 없다. 문자 그대로 의미가 없다. – user2485710