2

私はここで質問をし、C++ テンプレート引数 with expression、答えを得ましたが、今は次のようなものに移りたいと思っています:

#include <complex>
#include <type_traits>

using namespace std;

template<class T, class U>
complex< conditional<(sizeof( T ) > sizeof( U )), T, U>::type > my_method(T x, U y)  { }


これは私にエラーを与えます:

main.cpp:10:65: error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp> struct std::complex’
main.cpp:10:65: error:   expected a type, got ‘std::conditional<(sizeof (T) > sizeof (U)), int, float>::type’


T と U の前にキーワード typename と class を追加しようとしましたが、エラーも変わります。

main.cpp:37:1: error: wrong number of template arguments (1, should be 3)
/usr/include/c++/4.7/type_traits:77:12: error: provided for ‘template<bool <anonymous>, class, class> struct std::conditional’
main.cpp:10:10: error: template argument 1 is invalid
main.cpp:10:1: error: expected unqualified-id at end of input


Linux のコンパイラ オプションとして -std=c++11 を指定して g++ を使用しています。とにかく私がやろうとしていることをすることはありますか? ありがとう。

4

1 に答える 1

2

あなたのコンパイラが言うように:

main.cpp:10:65: error:   expected a type, got ‘std::conditional<(sizeof (T) > sizeof (U)), int, float>::type’

の前に型名がありませんstd::conditional<...

于 2013-08-13T22:24:34.710 に答える