Похожие чаты

Yo guys whats wrong w/ this shit template<typename T> struct SP {

SP() : t{ new T{} } { }

std::enable_if_t<
std::is_class_v<T>, T
>
* operator-> ();

T& operator* () {
return *t;
}

T* t;
};

struct Foo {
int x = 12;
}

SP<Foo> f;
// works fine
auto x = f->x;

//blows up if i do built in type
SP<int> i;
auto z = *i;



when i initialize it with built in types it gives the error no type named type in std::enable_if<false, T>::type
well i think it makes sence due to int is not a class type. but isnt that what enable_is made for? maybe im doin it the wrong way
would this be the right way:


template<typename T,
typename = void>
struct SP {

SP() : t{ new T{} } { }

T& operator* () {
return *t;
}

T* t;
};

template<typename T>
struct SP<T, typename =
enable_if<is_class<T>, T>::type>
{

SP() : t{ new T{} } { }

T* operator-> ();

T& operator* () {
return *t;
}

T* t;
};

struct Foo {
int x = 12;
}

SP<Foo> f;
// works fine
auto x = f->x;

// works fine
SP<int> i;
auto z = *i;

1 ответов

5 просмотров

You might want to read about SFINAE because that is why std::enable_if can do what it does.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Hi. Do we have a raid bot? Why nobody doing raids on X? Even RH mentioned this and nobody paying attention...whats the channel for hex memes? If mods cant run raids just insta...
H
31
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
блеать, почему так?? где в роутере это исправляется?
Арсен Маньяков 🇦🇲
16
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
🌊 Ocean Nodes Dashboard Update 🚀 Hey, Oceaners! First off, a massive round of applause 👏to all of you for the amazing engagement since we launched Ocean Nodes. In just a few ...
KreigDK | Never DM first🌊
3
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
люди, которые используют flameshot, к вам вопрос. Можно-ли поставить хоткей на создание скриншота? В программе есть отдел "горячие клавиши", но там все для редактирования, скр...
ThunDer104
11
Карта сайта