방학이라 신나게 놀고 있는 급식이야
C++로 웹페이지를 다운할 때 Boost.Asio 라이브러리를 사용하려고 하는데(Beast)
클랭으로 컴파일하면 딱히 문제가 안되는데
ICC로 컴파일하려니깐 애러가 나더라구
(boost::asio::detail::is_applicable_property_trait)
||||
is_applicable_property.hpp(48): error: argument list for variable template
"boost::asio::execution::detail::outstanding_work::tracked_t<I>::is_applicable_property_v [with I=0]" is missing
여기서 Property::template
템플릿이라고 힌트를 주는(?) 부분에서 잘못돌아가는거같은데
!!std::declval<Property>().template is_applicable_property_v<T>
이렇게 잠깐 바꿔보니 여긴 해결된건지 윗부분에서 문제가 발생하더라
(boost::asio::detail::composed_work_guard)
...
error: incomplete type is not allowed
executor_type executor_;
^
혹시 이 executor_type이 컴파일 타임에 문제가 되는건지 싶어서
static_assert(!std::is_same_v<std::void_t<executor_type>, void>, "");
를 앞에다 붙여보니 잘 어설트 되긴 하던데,
그래서 궁금한게
1. Property::template 에서 애러가 나는게 icc의 문제가 맞는지 아니면 부스트의 문제인지
2. is_applicable_property_v는 불 타입인데, 여기에 !! 붙인 이유가 뭔지
3. executor_type은 SFINAE도 일어나지 않은거같은데 incomplete 타입이라고 애러가 뜨는 이유는 무엇일지..
긴 글 읽어줘서 고마워 형들
declval은 rvalue를 만드는 건데 왜 저기다 쓴 거야? Property::template 라면 Property에 존재하는 template alias를 접근하는 건데?
!! 이거는 non-boolean을 boolean 으로 만들어주는 건데 신경 안써도 됨
declval은 .template을 써보려고 한번 사용해본거야! ::template만 안되는건지 확인해보고 싶어서. 답변 고마워!
나도 컴파일 함 해보려고 icc 설치 중인데 15기가 실화냐