sfinae

    2

    2答えて

    #include <vector> #include <list> #include <iostream> template < typename T, template<typename, typename = std::allocator<T>> class C, typename = std::enable_if_t < std::

    0

    1答えて

    「関数受信値」(#A)よりも「関数受信参照」(#B)を優先する方法を教えてください。 #include <iostream> using namespace std; class Heavy{/* ...... */}; //a complex class Heavy generateHeavy(){ return Heavy(); } void f(Heavy x){ //

    3

    1答えて

    私は異なるビュータイプを持っています。タイプはそれぞれstd::size_t View::dimensionメンバー定数とtypename View::value_typeメンバータイプです。 FromとTo両方は、ビュー(is_view<>を使用して検証)であり、Fromの含有量はToに割り当てることができる場合 以下コンパイル型チェックが確認しなければなりません。 (同じ次元と変換可能な値の型

    5

    3答えて

    ジェネリック型を文字列に変換する関数を実装しようとしました。積分型は、std::string()を使用してstd::to_string()、文字列と文字を使用して、要素ごとにベクトルを、他の方法の1つ(内容に応じて)を使用して文字列に変換する必要があります。 これは私が持っているものです。 //Arithmetic types template<class T> typename std:

    2

    1答えて

    以下のスニペットは、少なくとも私が考えた限り、専門化に適用されたSFINAEの可能な限り単純な例です。 最後の行がメインポイントとなり、障害が発生しています。特殊化されたfooテンプレートの定義によって、barテンプレートの専門化が決まります。他のbar特殊化は他の場所で定義することもできますし、任意の型の使用をサポートしないままにすることもできます。 enable_ifと同じパターンが広く使用さ

    2

    1答えて

    ClassTypeとそのコンストラクタ引数をテンプレート引数として受け取るオブジェクト作成者クラスを作成したいと思います。空tupleからstd::get<0>を避けるために、守ってstd::enable_ifで template<typename ClassType, typename ... Args> class ClassCreator : public ClassType {

    0

    1答えて

    を再宣言することはできません、私は私自身の「スマートイテレータ」を作成しようとしていますし、私はイテレータのタグに応じて、いくつかの演算子を持っているSFINAEを使用したい: ここでは私のコードです: template<class Iterator, class Predicat, class Tag> class RangeFilterIterator { public: Ran

    5

    2答えて

    std::enable_ifをC++ 11でよりよく理解しようとしていて、最小の例を書くことを試みています。クラスがAであり、メンバ関数がvoid foo()で、クラステンプレートのタイプTに基づく実装。 以下のコードは望ましい結果を示していますが、まだ完全に理解していません。バージョンV2は動作しますが、V1では動作しません「冗長」タイプUが必要なのはなぜですか? #include <iostr

    0

    1答えて

    テンプレート化された関数で完全転送を使用してl値またはr値が保持されるようにしたいと考えていますが、同時に可能なパラメータタイプに一定の制限を課したいと思います。 たとえば、Tを呼び出し可能オブジェクトに制限したいとします。 次のアプローチは、私 template<typename T> typename std::enable_if<std::is_callable<T>>::value>::

    14

    3答えて

    std::getで素晴らしいプレーGET`すると、次のテストケースによって示されるように、SFINAEフレンドリーではないようです第2の過負荷に向かってfooへの第2の呼び出し。実際には、のlibstdC++が得られます。 /usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/6.3.0/../../../../include/c++/6.3.0/tuple: