GCC STL(4.6.1)を調べて、がtrue
と評価された場合、std::copy()
は最適化バージョンを使用することがわかりました。std :: copy/memcpy/memmoveの最適化
std::copy()
とstd::reverse_copy()
テンプレートは、配列の要素をコピーするのに非常に便利なので、私はそれらを使いたいと思います。しかし、私はいくつかの型(テンプレートのインスタンス化の結果)を持っています。構造体には、単純な値、ポインタ、コピーコンストラクタや代入演算子が含まれていない構造体があります。
G ++は、私のタイプが実際に些細なものであることを理解するのに十分ですか? C++ 98では、STLの実装が私の型が自明であることを知るための方法はありますか?
私はC++ 11では、タイプの形質がis_trivial<>
で便利になると思います。これは正しいですか?
ありがとうございます!
EDIT:GCCとllvmにとって些細なことではない、かなり簡単なType
クラスの例です。何か案は?
#include <iostream>
struct Spec;
template <typename TValue, typename TSpec>
class Type
{
public:
TValue value;
Type() : value(0) {}
};
int main()
{
std::cerr << "__is_trivial(...) == "
<< __is_trivial(Type<char, Spec>) << '\n';
return 0;
}
C++ 03私が思い出したように、PODもデフォルトのコンストラクタをforbitしていますが、これはおそらくそれが些細なことであることを防ぐものです。 –
@MooingDuck:ありがとう、私はそれが説明だと思う。マチューの答えと一緒に、私の質問に答えます。 – Manuel