perfect-forwarding

    2熱度

    1回答

    考慮一類的兩種實現方式: struct S1 { std::vector<T> v; void push(T && x) { v.push_back(std::move(x)); } void push(T const & x) { push(T(x)); } void pop() { v.pop_back(); } void replace(T

    4熱度

    1回答

    我知道如何完善轉發參數。但是,我從不同的來源讀取(如有效的現代C++項目24 - 斯科特邁爾斯),人們可以只有完美的向前,當你有確切的模板名稱,例如: template<typename T> void foo(T&& param) { bar(std::forward<T>(param)); } 如果我所尋找的是有是一種完善邁出了模板的模板參數,如: template<template<i

    2熱度

    1回答

    我有我的代碼庫中的各種功能,它需要一個通用的可調用對象,並在調用它之前將它傳遞給一系列嵌套的lambdas。例如: template <typename TF> void interface(TF&& f) { nested0([/*...*/]() { nested1([/*...*/](auto& x) { nested

    0熱度

    1回答

    我在this article中發現了一些不錯的屬性模板。 我希望他們支持完美轉發,但我不喜歡我目前的解決方案: // a read-write property which invokes user-defined functions template <class Type, class Object, const Type&(Object::*real_getter)() const, co

    0熱度

    2回答

    我想了解如何完美轉發的作品,但我不明白爲什麼拷貝構造函數被調用下面的代碼中 #include <utility> #include <iostream> using std::cout; using std::endl; class Something { public: Something() = default; Something(__attribute__(

    7熱度

    1回答

    我想創建拉姆達將接受任何數量的參數一樣:這裏 template <typename... Args> void f(Args... args) { auto l = [args...]() { g(args...); } // use l } 問題是,它不動,只工種。如果它只有1個精算,我會做不像 void f(Arg arg) { au

    5熱度

    1回答

    這似乎是已經問過的最相關的問題。 Whats the difference between std::move and std::forward 但每次的答案都是不同的,適用,並說略有不同的東西。所以我很困惑。 我有以下情況。 複製項目到容器 複印產品C++ 03所以我的理解是相當不錯的。 構建項目進入容器 將構建項目進入容器我相信正確使用完美轉發通過兩個函數轉發參數T的構造函數emplaceBa

    2熱度

    1回答

    我想在我的「myArgs類」中實現一個完美的轉發構造函數, 應該只涉及myClassBase<>的專業化。 粗略地說:調用此構造爲myClassBase<> 每個變化,但它不會編譯:'<function-style-cast>' : cannot convert from 'myClass' to 'myArgs'. 我想這是因爲編譯器不能推斷出Args&&到myClassBase<T, D>。

    4熱度

    2回答

    我想知道使用完美轉發仿函數的正確方法是什麼?這裏有兩個代碼片段。哪一個是最好的,如果兩者都不是,最好的形式是什麼? template<typename T, typename... Args> void callMe(T&& func, Args&&... args) { func(std::forward<Args>(args)...); } 或者 template<typen

    1熱度

    2回答

    我正在編寫綁定SQL參數的函數,並希望使用標籤調度。所以我寫了這個代碼: class OraclePreparedStatement { public: template<typename T> void bind_param(uint32_t col_index, T&& param) { bind_param_impl(col_index, std