LINUX.ORG.RU

Избранные сообщения fsb4000

Пара вопросов о std::valarray

Форум — Development

1. Почему конструктор для valarray сделали не в том же стиле, что и vector.

valarray( const T& val, std::size_t count );

vector( size_type count, const T& value,
        const Allocator& alloc = Allocator() );
Есть ли смысл в том, чтобы первым параметром указывать значение, а не наоборот?

2. Почему слайсы valarray не являются stl контейнерами и для них нет итератора?

std::valarray<int> a(n);
...
for(auto x : a[std::slice(0, 50, 2)]){
    std::cout<<x<<"\n";
}
Я ожидал бы, что такой код выведет все элементы из a с чётными индексом, но нет.

 

Waterlaz ()

Получить тип возвращаемого значения из лямбды

Форум — Development

Нюанс в том, что незивестен точный тип лямбды, они приходят из пользовательского кода, следовательно мне неизвестны типы и количество аргументов, которые функтор ожидает, т.е. я не могу использовать invoke_result<>. Нужно заглянуть в класс, схватить любой оператор() и вернуть тип возврата. Получилось такое:


template <typename T>
struct Return_type;
template <typename R, typename... Args>
struct Return_type<R(Args...)> {using type = R;};
template <typename R, typename Q, typename... Args>
struct Return_type<R (Q::*)(Args...)const> {using type = R;};
template <typename R, typename Q, typename... Args>
struct Return_type<R (Q::*)(Args...)> {using type = R;};

struct A{
	struct V {
		double operator()(int t)const {return 5;}
	};
};

int main() {
	auto l = [](double a, int e)mutable{return 2;};
	auto l2 = [](int a){;return 2;};
	Return_type<decltype(&decltype(l)::operator())>::type a;
	Return_type<decltype(&decltype(l2)::operator())>::type a2;
	Return_type<decltype(&A::V::operator())>::type a3;


	auto l3 = [](auto b){;return 2;};
	Return_type<decltype(&decltype(l3)::operator())>::type a4;

	return 0;
}

И в принципе свою задачу я решил, мне этого хватит, но не знаю как (и возможно ли вообще) получить тип от лямбды, внутри которой шаблонный оператор() (тот, что auto l3). Решаема ли задача в случае с l3?

 

kvpfs ()

Компеляция QT проекта по x64 не понятный глюк

Форум — Development

Добрый день. Помогите понят почему такой глюк. Пишу программу на QT для работы с сокетами, написал клинскую часть на на QT для Orange PI, всё собралось и работает как часы. Начал писать серверную часть пишу windows, поставил компилятор под x64 всё собирается нормально запускается но при этом программа глючит, подключаюсь к сокету и больше не чего не работает. Удалил компилятор под x64 поставил под 32 бита проблема исчезла. Написал серверную часть программы. Начал собирать под linux x64(debian), и проблема повторилась, собралось, но также работает не корректно. Помогите понять иза чего? Собираю вот так, через консоль.

qmake -project "CONFIG+=QT" "QT+=network"
qmake server.pro
make

 

mannaz2004 ()

Как обычно создается синглтон: наследованием или прямым кодом?

Форум — Development

Нигде не нашел внятного ответа на простой вопрос.

В программе нужно иметь несколько синглтонов, например один из вариантов синглтона Майерса:

class CMySingleton
{
public:
  static CMySingleton& Instance()
  {
    static CMySingleton singleton;
    return singleton;
  }

// Other non-static member functions
private:
  CMySingleton() {}                                  // Private constructor
  ~CMySingleton() {}
  CMySingleton(const CMySingleton&);                 // Prevent copy-construction
  CMySingleton& operator=(const CMySingleton&);      // Prevent assignment
};

Как такие классы-синглтоны правильнее создавать? Просто надо наследоваться от вышеуказанного CMySingleton, или надо напрямую привести хидер обычного класса к такому же состоянию и прописать реализацию метода Instance()?

 , ,

Xintrea ()