LINUX.ORG.RU

История изменений

Исправление dissident, (текущая версия) :

В принципе могли (с правильным синтаксисом)

Как-то так?..

#include <iostream>
using namespace std;

template<typename T>
class my_basic_string
{
public:    
    my_basic_string(const char* c_str) { /* do nothing */ }
};

template<typename T>
class MyTraits
{
public:
    static void keke() { /* Do nothing */ }
};

template<typename T>
class MyAlloc
{
public:
    static void keke() { /* Do nothing */ }
};


template<typename CharT>
class MyLocale
{
public:
    template<
        class AMyTraits = MyTraits<CharT>,
        class AMyAlloc = MyAlloc<CharT>
    >
    bool operator()( const my_basic_string<CharT>& s1,
                     const my_basic_string<CharT>& s2) const
    {
        AMyTraits::keke();
        AMyAlloc::keke();
        return true;
    }
};

int main(int argc, char* argv[])
{
    cout << MyLocale<char>()("kekeke",  "kekeke") << endl;
}

Пошел утоться в унитазе и/или читать SICP.

Исправление dissident, :

В принципе могли (с правильным синтаксисом) Как-то так?..

#include <iostream>
using namespace std;

template<typename T>
class my_basic_string
{
public:    
    my_basic_string(const char* c_str) { /* do nothing */ }
};

template<typename T>
class MyTraits
{
public:
    static void keke() { /* Do nothing */ }
};

template<typename T>
class MyAlloc
{
public:
    static void keke() { /* Do nothing */ }
};


template<typename CharT>
class MyLocale
{
public:
    template<
        class AMyTraits = MyTraits<CharT>,
        class AMyAlloc = MyAlloc<CharT>
    >
    bool operator()( const my_basic_string<CharT>& s1,
                     const my_basic_string<CharT>& s2) const
    {
        AMyTraits::keke();
        AMyAlloc::keke();
        return true;
    }
};

int main(int argc, char* argv[])
{
    cout << MyLocale<char>()("kekeke",  "kekeke") << endl;
}

Пошел утоться в унитазе и/или читать SICP.

Исправление dissident, :

В принципе могли (с правильным синтаксисом) Как-то так?..

#include <iostream>
using namespace std;

template<typename T>
class my_basic_string
{
public:    
    my_basic_string(const char* c_str)
    { /* do nothing */ }
};

template<typename T>
class MyTraits
{
public:
    static void keke() { /* Do nothing */ }
};

template<typename T>
class MyAlloc
{
public:
    static void keke() { /* Do nothing */ }
};


template<typename CharT>
class MyLocale
{
public:
    template<
        class AMyTraits = MyTraits<CharT>,
        class AMyAlloc = MyAlloc<CharT>
    >
    bool operator()( const my_basic_string<CharT>& s1,
                     const my_basic_string<CharT>& s2) const
    {
        AMyTraits::keke();
        AMyAlloc::keke();
        return true;
    }
};

int main(int argc, char* argv[])
{
    cout << MyLocale<char>()("kekeke",  "kekeke") << endl;
}

Пошел утоться в унитазе и/или читать SICP.

Исходная версия dissident, :

В принципе могли (с правильным синтаксисом) Как-то так?..

#include <iostream>
using namespace std;

template<typename T>
class my_basic_string
{
public:    
    my_basic_string(const char* c_str)
    { /* do nothing */ }
};

template<typename T>
class MyTraits
{
};

template<typename T>
class MyAlloc
{
};


template<typename CharT>
class MyLocale
{
public:
    template<
        class AMyTraits = MyTraits<CharT>,
        class AMyAlloc = MyAlloc<CharT>
    >
    bool operator()( const my_basic_string<CharT>& s1,
                     const my_basic_string<CharT>& s2) const
    {
        return true;
    }
};

int main(int argc, char* argv[])
{
    cout << MyLocale<char>()("kekeke",  "kekeke") << endl;
}

Пошел утоться в унитазе и/или читать SICP.