статическую переменную.
static int d=0;
template <typename T, T* ptr>
struct PtrStruct {
T* const p = ptr;
}
PtrStruct<int, &d> d_ptr;
Сейчас фактически надо дважды указывать тип переменной: в её объявлении и в инстанцировании шаблона. Можно ли как-то это оптимизировать, чтобы получалось примерно
PtrStruct<&d> d_ptr;
а тип d выводился автоматически?
А чего б не просто static T::d? Зачем специализация указателем?
его ещё опять надо объявлять вне класса. Практически то же, что и у мееня уже написано.
Можно было бы CTAD использовать
Ты не можешь параметризировать шаблон указателем, можно только типом, либо значением интегральных типов либо float или double. Либо я что-то не понял, либо одно из двух
https://godbolt.org/z/aYcq5zjzq
https://en.cppreference.com/w/cpp/language/template_parameters A non-type template parameter must have a structural type, which is one of the following types (optionally cv-qualified, the qualifiers are ignored): ... a pointer type (to object or to function); a pointer to member type (to member object or to member function); ...
Обсуждают сегодня