выбор типа шаблона в зависимости от другого типа шаблона - PullRequest
0 голосов
/ 09 декабря 2018

Могу ли я присвоить типу шаблона, скажем, T тип, в зависимости от того, что другой тип шаблона скажет U что-то вроде этого внутри функции.

typename <class T, class U>
func(U var)
{
...

if(U == int) //this can be replaced with std::is_same<U, int>
{
    T = flaot; //instead int/float i have my own data types

}
...
}

Возможно ли это .. если да, то как это делается

1 Ответ

0 голосов
/ 09 декабря 2018

Не уверен, что это именно то, что вам нужно, но вы можете попробовать это:

template <typename T>
class Selector; // implement this one as well, if you want to have a default...

template <> class Selector<int> { public: using Type = ClassX; };
template <> class Selector<double> { public: using Type = ClassY; };

template<typename U>
void func(U var)
{
    using T = typename Selector<U>::Type;
};

Вариант:

template<typename U, typename T = typename Selector<U>::Type>
void func(U var) { }

Это позволит заменить выбранный тип, если это необходимо:

func(12);              // uses default: ClassX
func<int, ClassZ>(10); // replace ClassX with ClassZ
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...