내 문제는 더미 매개 변수를 사용하지 않고 템플릿 매개 변수를 추론하도록 컴파일러에 지시하는 방법을 알지 못한다는 것입니다. 여기컨테이너에 대한 템플릿 매개 변수 공제
template<int I, class C, class T, std::size_t N>
inline typename std::enable_if<
std::is_same<C, std::array<T, N> >::value,
std::array<T, N> >::type
create_container()
{
std::array<T, N> array;
// I is used somewhere
return array;
}
작업 예제 : 여기 휴무 예가 무엇 용기 C
지정 첫번째 예에서 인스턴스화
template<int I, typename T, std::size_t N>
std::array<T, N> create_container(std::array<T, N> const&) // dummy parameter helps deduction
{
std::array<T, N> array;
// I is used somewhere
return array;
}
템플릿 파라미터이지만 제의 기능은 더미에 기초하여 선택되고 매개 변수. SFINAE 또는 다른 마술이 가능합니까? 부분 템플릿 전문화가 가능하지만 기능 템플릿에서는 불가능합니다.
create_container
는 다음과 같이 호출됩니다
template <std::size_t O, typename R, typename ...A, std::size_t ...I>
inline R forward(R (*f)(A...), indices<I...>)
{
return (*f)(create_container<I + O, A>()...);
}
어떻게 당신이 당신의'create_container()를 호출하는'때 더미 인수를 전달하지? –
"작동 예제"가 정상적으로 작동합니까? 'typename N'은 꽤 틀린 것 같고, 인수가 단일 문자 대신 이름이라면 도움이 될 것입니다. –
또한,'> :: type' 이후에 작동하지 않는 예제에서 여분의 꺾쇠 괄호가 있습니다. –