私はMySmartPointer、スマートポインタテンプレートクラスを使用する特性クラス、AttributeTraitsを得た:テンプレートテンプレートのエイリアスへのtypedef
template<typename T>
class MySmartPointer {};
template<template <typename> class SP = MySmartPointer>
struct AttributeTraits {
template <typename T>
using SmartPointerClass = SP<T>;
};
AttributeTraitsそれが持っているテンプレートクラスを保持するためにエイリアスを使用しています。 は今、私はそのような形質クラスは、スマートポインタクラスにのtypedef /エイリアスを使用します取得する属性クラスを、必要とする:
template <typename Traits>
struct Attribute {
typedef typename Traits::SmartPointerClass<int> SmartPointerType; // error: non-template 'SmartPointerClass' used as template
using SmartPointerType2 = typename Traits::SmartPointerClass<int>; // error: expected ';' before '<' token
using SmartPointerType3 = Traits::SmartPointerClass<int>; // error: non-template 'SmartPointerClass' used as template
};
しかし、作品上記の3つのオプションのどれも...