2018-12-16

anond:20181216143447

ハイライトできないがまぁまぁ見れるようになった。

・'<'と'>'と空白を数値文字参照に変換

・以下のように置換

行頭→<tt>

行末→</tt>

改行→<br>

#include <iostream>

template<int N> struct int_ {};
template<bool B> struct bool_ {};

struct continue_{};
struct end_{};

template <bool Cond>
auto is_end(bool_<Cond>)
    -> typenamestd::conditional<Cond, end_, continue_>::type;

template <typename T, int N>
auto add_pointers_impl(T, int_<N>, continue_)
    -> decltype(
        add_pointers_impl( 
            std::declval<T*>(),
            int_<N - 1>(),
            std::declval<
                decltype(
                    is_end(
                        bool_<N-1 == 0>()
                    )
                )
            >()
        )
    );
                
template <typename T, int N>
auto add_pointers_impl(T, int_<N>, end_)
    -> T;
  
template <typename T, int N>
auto add_pointers(T, int_<N>)
    -> decltype(
        add_pointers_impl(
            std::declval<T>(),
            int_<N>(),
            std::declval<
                decltype(
                    is_end(
                        bool_<N == 0>()
                    )
                )
            >()
        )
    );

int main()
{
  typedef decltype(add_pointers(std::declval<int>(), int_<3>())) result;

  result pppi;
  std::cout << typeid(pppi).name() << std::endl;

  int*** pppi2;
  std::cout << typeid(pppi2).name() << std::endl;

  return 0;
}

記事への反応(ブックマークコメント)

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん