C++ 17은 형식이 아닌 템플릿 매개 변수에 대해 auto
키워드를 제공합니다. 이를 템플릿 템플릿 매개 변수와 결합하여 템플릿 변수와 함께 인수로 사용할 수 있습니까?템플릿 변수를 템플릿 매개 변수로 사용할 수 있습니까 (클래스 템플릿과 유사)?
template <template <typename> auto X> // <-- This seems to be illegal
struct Foo
{
};
배경 : 나는 type_vector 클래스에 대한 copy_if을 구현하려는
. 나는 값이 템플릿 구조체에 내 모든 변수를 포장 할 수 물론
template <typename Container,
template <typename> auto Condition> // If this were allowed
struct copy_if;
template <typename... Ts,
template <typename> auto Condition>
struct copy_if<type_vector<Ts...>, Condition>
{
using type = decltype(
(type_vector<>{} + ... +
std::conditional_t<Condition<Ts>,
type_vector<Ts>,
type_vector<>>{}));
};
,하지만 난 차라리 : 내가 사용하고자하는 모든 조건이 템플릿 변수로 사용할 수 있기 때문에, 한 가지 방법이 될 것이다 구현 그것을 피하십시오.
당신이 type_vector을 정의? –
@RichardHodges 예,'type_vector'가 정의되어 있습니다. 두 개의'type_vector'를 연결하기 위해'operator +'와 같습니다. – Rumburak
C++ 17을 잘 모릅니다. 그러나'template auto'는 의미가 없습니다. 자동은 단지 클래스 일 수 있기 때문입니다. 예 : '템플릿 int'의 개념이 없습니다 –