C++テンプレートメタプログラミング練習問題
1152 ワード
2-0
メタ関数add_を作成するconst_ref,Tが参照タイプであればTを返し,そうでなければT const&を返す.
2-1
三元関数replace_を作成するtypeは、任意の複合タイプcをその最初のパラメータとして受け入れ、cに現れるすべてのtype xをyに置き換える.
メタ関数add_を作成するconst_ref,Tが参照タイプであればTを返し,そうでなければT const&を返す.
#include
template
struct add_const_reference;
template
struct add_const_ref
{
using type = typename add_const_reference<:is_reference>::value, T>::type;
};
template
struct add_const_reference
{
using type = typename std::add_lvalue_reference::type>::type;
};
template
struct add_const_reference
{
using type = typename std::remove_reference::type;
};
int main(int argc, char *argv[])
{
using a = int&;
using b = int;
std::cout << std::is_same::type>::value << std::endl;
using c = int const&;
std::cout << std::is_same::type>::value << std::endl;
}
2-1
三元関数replace_を作成するtypeは、任意の複合タイプcをその最初のパラメータとして受け入れ、cに現れるすべてのtype xをyに置き換える.