Вот мой код:Инициализация статической переменной константный дает мне шаблон определения нешаблонном сопзЬ
#include <iostream>
class c{
public:
int y;
c(int x,int p):y(x){
std::cout<<"has been made"<<std::endl;
}
};
template<int x,typename B = void>
struct checkeven{
};
template<typename B>
struct checkeven<0,B>{
typedef B type;
};
template<int x,int y,class = typename checkeven<x%2,int>::type>
struct t{
static const c tee;
static const inline c& initor(){
return tee;
}
};
template<int x,int y>
const c t<x,y>::tee(x,y); //how do i initialize?
int main(int argc, char** argv) {
//t<2,1>::initor();
//t<2,2>::initor();
return 0;
}
Я попытался исследовать это о, но я не могу найти ничего, кроме внушения, чтобы удалить значение по умолчанию дублировать , Я хочу реализовать SFINAE, чтобы убедиться, что первое значение является четным числом. У меня есть статическая константная переменная, которую я хочу инициализировать. Он отлично работал без моего класса по умолчанию, но как только я добавил его, все стало беспорядочным. Как инициализировать мой константный статический член? Я также хотел бы знать, почему мой код не работает.
Это работает спасибо, но зачем мне это нужно? –
@CarloBrew Я попробовал это по инстинкту, я ищу причину в стандарте, я отредактирую свой пост, как только у меня будет веская причина. – Pumkko
Хорошо, спасибо. –