ValueError: 'f' нет в списке, но он явно

Вы можете сделать ответ Synxis (использование параметра фиктивного значения по умолчанию) еще более чистым с C ++ 11:

/// template <typename X>, not needed for the example
struct Outer
{
private:
    template <typename A, typename D = void>
    struct Inner
    {
        Inner()  { cout << "default" << endl; }
    };
    template <typename D>
    struct Inner<int,D>
    {
        Inner()  { cout << "int" << endl; }
    };  
public:
    template <typename T>
    using  Nested = Inner<T>;
};

Преимущество этого улучшения в том, что подпись Nested имеет только один параметр шаблона , который, я думаю, поможет, если вы хотите правильно его сопоставить в мета-программировании шаблона.

-10
задан Joshua 24 August 2018 в 01:15
поделиться