clang 3.4(svn) に Variable templates が部分的に実装されていたので試してみた
clang 3.4(svn) に C++1y で実装される予定の Variable templates が部分的に実装されていたので少し試してみました。
C++1y では以下のようにコードを記述することができるみたいです。
[ソース]
#include <iostream> #include <limits> #include <iomanip> #include <array> template<typename T> constexpr T pi = T(3.1415926535897932385); template<typename T> T area_of_circle_with_radius(T r){ return pi<T> * r * r; } template<int... args> constexpr std::array<int, sizeof...(args)> args{{args...}}; int main(){ std::cout.precision(std::numeric_limits<double>::digits10 + 1); std::cout << pi<float> << std::endl; std::cout << pi<double> << std::endl; std::cout << area_of_circle_with_radius(2.0f) << std::endl; std::cout << area_of_circle_with_radius(2.0) << std::endl; for(auto&& n : args<1, 2, 3, 4, 5>){ std::cout << n << std::endl; } return 0; }