0
嗯,我正在用C++ 98編寫代碼並嘗試使用元編程。在C++中獲取模板依賴模板類型
我寫了這樣的「粘合劑」的:
template<
template<
template<typename TArg1_1> class TArg1,
template<typename TArg2_1> class TArg2,
template<typename TArg3_1> class TArg3,
typename TArg4> class TFunction,
template<typename TArg1_1> class TArg1,
template<typename TArg2_1> class TArg2,
template<typename TArg3_1> class TArg3>
struct MetaBinder_4_3_templates_1_1_1_0 {
template <typename TArg4>
struct type : public TFunction<TArg1, TArg2, TArg3, TArg4> {};
};
那我想接下來做的是「捆綁」的參數,以使其與下面的代碼:
template<
template <typename TType> class TApplier,
typename TInitialType>
struct PreserveQualifiers : public PreserveQualifier<
TypeClearVolatile,
TypeSetVolatile,
typename template <typename> MetaBinder_4_3_templates_1_1_1_0 <
PreserveQualifier,
TypeClearConst,
TypeSetConst,
TApplier>::type,
TInitialType>
{};
PreserveQualifier
聲明如下:
template<
template <typename TType> class TClearer,
template <typename TType> class TSetter,
template <typename TType> class TApplier,
typename TInitialType>
struct PreserveQualifier;
但上面的代碼實際上給了我這個錯誤(GC C 4.7,我分成幾行):
error: wrong number of template arguments (3, should be 4)
error: provided for '
template<
template<class TType> class TClearer,
template<class TType> class TSetter,
template<class TType> class TApplier,
class TInitialType
> struct PreserveQualifier'
我假設問題在於typename template <typename> MetaBinder_4_3_templates_1_1_1_0 <...>::type
構造語法。實際的問題是:在這種情況下,我應該如何指定依賴模板類型?
在我看來就像一個過於複雜的方式來實現的東西,我懷疑,比較簡單。你的目標是什麼?我可能會提出一個更簡單的解決方案。 – ArunasR 2014-10-02 08:35:48