[英]Template Template Parameters in the C++ Standard Library?
C ++標准庫中的哪些模板(如果有)具有一個或多個模板模板參數?
如果有很多,那么幾個例子就可以了。
如果C ++版本很重要,那么最新的C ++ 14 / C ++ 1y草案就會得到優先考慮。
我不知道C ++標准庫中指定采用模板模板參數的任何模板,但C ++ 11中至少有一個標准模板具有模板模板參數的部分特化: std::pointer_traits
。 std::pointer_traits<Ptr>::element_type
指定為:
Ptr::element_type
如果存在這樣的類型; 否則,T
如果Ptr
是SomePointer<T, Args>
形式的類模板實例,其中Args
是零個或多個類型參數; 否則,專業化是不正確的。
為了實現這一點,你需要一個SomePointer
的模板模板參數,因為它可以是一個任意的類模板(只要它只有類型模板參數,確切地說)。 這是執行此操作的libstdc ++幫助程序類部分特化,例如:
template<template<typename, typename...> class _SomePtr, typename _Tp,
typename... _Args>
struct __ptrtr_elt_type<_SomePtr<_Tp, _Args...>, false>
{
typedef _Tp __type;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.