LINUX.ORG.RU

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

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

Можно для SFINAE

#include <iostream>

template<typename T>
decltype(T::Field, void()) func(T*)
{
    std::cout << "funcT" << std::endl;
}

void func(void*)
{
    std::cout << "funcVoid" << std::endl;
}

struct Foo
{
    int a{};
};

struct Bar
{
    int Field{};
};

int main()
{
    Foo f;
    Bar b;

    func(&f);
    func(&b);
    return 0;
}

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

Можно для SFINAE #include <iostream>

template<typename T> decltype(T::Field, void()) func(T*) { std::cout << «funcT» << std::endl; }

void func(void*) { std::cout << «funcVoid» << std::endl; }

struct Foo { int a{}; };

struct Bar { int Field{}; };

int main() { Foo f; Bar b;

func(&f); func(&b); return 0; }