1
我試圖創建一個給定一組元函數和一個元函數的模板,將這個methafunction添加到提供的集合。variadic variadic模板模板專業化錯誤
template<template<template<typename...> class...> class Dest,
template<typename...> class FirstTpl,
template<typename...> class ...Tpls>
struct template_push_front
{
};
template<template<template<typename...> class...> class Dest,
template<typename...> class FirstTpl,
template<typename...> class ...Tpls>
struct template_push_front<Dest, FirstTpl, Dest<Tpls...>> : Dest<FirstTpl, Tpls...>
{
};
- 元函數表示爲可變參數模板。
- 目的地是現有的一組元功能
- TPLS是目的地內容
- FirstTpl是元功能被添加到目的地
的開頭當編譯我收到以下錯誤:
type/value mismatch at argument 3 in template parameter list for ‘template<template<template<class ...> class ...<template-parameter-2-1> > class Dest, template<class ...> class FirstTpl, template<class ...> class ... Tpls> struct template_push_front’
struct template_push_front<Dest, FirstTpl, Dest<Tpls...>> : Dest<FirstTpl, Tpls...>
expected a class template, got ‘Dest<Tpls ...>’
就行
struct template_push_front<Dest, FirstTpl, Dest<Tpls...>> : Dest<FirstTpl, Tpls...>
關於
Dest<Tpls...>
令牌
我明白,編譯器無法識別目的地< TPLS ...>作爲類模板。我能做些什麼來編譯它?
你能舉一個我們如何使用它的例子嗎? – dyp
也許你可以發佈一個更完整的例子 - 包括你如何使用它? – Nim
我猜你想要的東西,像'模板<模板<模板類...>類目的地, 模板類FirstTpl, 類List> 結構template_push_front { };'。然後你可以使用你提供的專業化(沒有改變)。然而,* primary *模板的第一個模板參數根本不需要,我寧願交換'FirstTpl'的位置和元函數列表。 –
dyp