- C++相談室 part115 [転載禁止]©2ch.net
450 :デフォルトの名無しさん[sage]:2015/01/13(火) 03:23:48.60 ID:2zJXl9HC - #include <iostream>
template <typename T> void print( T a ) { std::cout << a << std::endl; } template <typename Head, typename ...T> void print( Head a, T... b ) { std::cout << a << std::endl; print( b... ); } int main() { print( 1, 2, 3, 4 ); } じゃあかんのか。型を統一したいというが、それであれば可変長テンプレート引数を用いるのは間違いな気がする(テンプレート引数というのは基本的に型を実引数に受け取るものだ。)
| - C++相談室 part115 [転載禁止]©2ch.net
451 :デフォルトの名無しさん[sage]:2015/01/13(火) 03:24:16.56 ID:2zJXl9HC - どうしてもというならこんな感じde
#include <iostream> template <typename Head, typename ...T> struct print { void operator()( Head a, T... b ){ std::cout << a << std::endl; print<T...>{}( b... ); } }; template <> struct print<int> { void operator()( int a ){ std::cout << a << std::endl; } }; // 実使用部. template <typename ...T> void serial_print( T... a ){ print<T...>{}( a... ); } int main() { serial_print( 1, 2, 3, 4 ); //serial_print( 1, 2.0f, 3.0, 4ul ); // こちらを入れるとエラー. }
|
|